Can create a family member

This commit is contained in:
2023-08-04 19:03:46 +02:00
parent 274e9d9a21
commit f344765dd8
15 changed files with 1122 additions and 19 deletions

View File

@ -1,6 +1,6 @@
use std::time::Duration;
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[derive(Debug, Copy, Clone, serde::Serialize, serde::Deserialize)]
pub struct SizeConstraint {
min: usize,
max: usize,
@ -17,6 +17,23 @@ impl SizeConstraint {
}
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct NumberValueConstraint {
min: i64,
max: i64,
}
impl NumberValueConstraint {
pub fn new(min: i64, max: i64) -> Self {
Self { min, max }
}
pub fn validate(&self, val: impl Into<i64>) -> bool {
let val = val.into();
val >= self.min && val <= self.max
}
}
#[derive(Debug, Clone, serde::Serialize)]
pub struct StaticConstraints {
pub mail_len: SizeConstraint,
@ -24,6 +41,22 @@ pub struct StaticConstraints {
pub password_len: SizeConstraint,
pub family_name_len: SizeConstraint,
pub invitation_code_len: SizeConstraint,
pub member_first_name: SizeConstraint,
pub member_last_name: SizeConstraint,
pub member_birth_last_name: SizeConstraint,
pub member_email: SizeConstraint,
pub member_phone: SizeConstraint,
pub member_address: SizeConstraint,
pub member_city: SizeConstraint,
pub member_postal_code: SizeConstraint,
pub member_country: SizeConstraint,
pub member_sex: SizeConstraint,
pub member_note: SizeConstraint,
pub date_year: NumberValueConstraint,
pub date_month: NumberValueConstraint,
pub date_day: NumberValueConstraint,
}
impl Default for StaticConstraints {
@ -37,6 +70,20 @@ impl Default for StaticConstraints {
FAMILY_INVITATION_CODE_LEN,
FAMILY_INVITATION_CODE_LEN,
),
member_first_name: SizeConstraint::new(0, 30),
member_last_name: SizeConstraint::new(0, 30),
member_birth_last_name: SizeConstraint::new(0, 30),
member_email: SizeConstraint::new(0, 255),
member_phone: SizeConstraint::new(0, 30),
member_address: SizeConstraint::new(0, 155),
member_city: SizeConstraint::new(0, 150),
member_postal_code: SizeConstraint::new(0, 12),
member_country: SizeConstraint::new(0, 2),
member_sex: SizeConstraint::new(0, 1),
member_note: SizeConstraint::new(0, 35000),
date_year: NumberValueConstraint::new(1, 2050),
date_month: NumberValueConstraint::new(1, 12),
date_day: NumberValueConstraint::new(1, 31),
}
}
}