userlib/dto/
user_request.rs

1use 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 {}