userlib/dto/
user_request.rs1use chrono::NaiveDateTime;
2use common::entity::DtoReq;
3use common::enums::gender::Gender;
4use common::utils::serialize_option_naive_date;
5use serde::{Deserialize, Serialize};
6
7use crate::dto::user_role_request::UserRoleRequest;
8use crate::enums::aboriginality_type::AboriginalityType;
9use crate::jsonb::mfa::Mfa;
10
11#[derive(Serialize, Deserialize, Debug, )]
12#[serde(rename_all = "camelCase")]
13pub struct UserRequest {
14 pub first_name: String,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub middle_name: Option<String>,
17 pub last_name: String,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub nickname: Option<String>,
20 pub email: String,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub send_invitation_email: Option<bool>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub shapass: Option<String>,
25 pub gender: Gender,
26 #[serde(default)]
27 #[serde(with = "serialize_option_naive_date")]
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub birthday: Option<NaiveDateTime>,
30 pub role: UserRoleRequest,
31 pub mfa: Option<Mfa>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub aboriginality: Option<AboriginalityType>,
34}
35
36impl DtoReq for UserRequest {}