1use crate::models::common::*;
4use serde::{Deserialize, Serialize};
5use uuid::Uuid;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct User {
11 pub id: Uuid,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub company_id: Option<Uuid>,
14 pub first_name: String,
15 pub last_name: String,
16 pub email: String,
17 pub is_active: bool,
18 pub is_terms_of_service_accepted: bool,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub address: Option<Address>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub phone_country_code: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub phone_number: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub wallet_address: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub solana_address: Option<String>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub tron_address: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub stellar_address: Option<String>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub application_status: Option<ApplicationStatus>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub application_external_verification_link: Option<ApplicationLink>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub application_completion_link: Option<ApplicationLink>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub application_reason: Option<String>,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45#[serde(rename_all = "camelCase")]
46pub struct CreateCompanyUserRequest {
47 pub first_name: String,
48 pub last_name: String,
49 pub email: String,
50 pub is_terms_of_service_accepted: bool,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub birth_date: Option<String>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub wallet_address: Option<String>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub solana_address: Option<String>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub address: Option<Address>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub phone_country_code: Option<String>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub phone_number: Option<String>,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
67#[serde(rename_all = "camelCase")]
68pub struct CreateUserRequest {
69 pub first_name: String,
70 pub last_name: String,
71 pub email: String,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub wallet_address: Option<String>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub solana_address: Option<String>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub address: Option<Address>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub phone_country_code: Option<String>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub phone_number: Option<String>,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize)]
86#[serde(rename_all = "camelCase")]
87pub struct UpdateUserRequest {
88 #[serde(skip_serializing_if = "Option::is_none")]
89 pub first_name: Option<String>,
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub last_name: Option<String>,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub email: Option<String>,
94 #[serde(skip_serializing_if = "Option::is_none")]
95 pub is_active: Option<bool>,
96 #[serde(skip_serializing_if = "Option::is_none")]
97 pub is_terms_of_service_accepted: Option<bool>,
98 #[serde(skip_serializing_if = "Option::is_none")]
99 pub address: Option<Address>,
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub phone_country_code: Option<String>,
102 #[serde(skip_serializing_if = "Option::is_none")]
103 pub phone_number: Option<String>,
104 #[serde(skip_serializing_if = "Option::is_none")]
105 pub wallet_address: Option<String>,
106 #[serde(skip_serializing_if = "Option::is_none")]
107 pub solana_address: Option<String>,
108 #[serde(skip_serializing_if = "Option::is_none")]
109 pub tron_address: Option<String>,
110 #[serde(skip_serializing_if = "Option::is_none")]
111 pub stellar_address: Option<String>,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
116#[serde(rename_all = "camelCase")]
117pub struct ListUsersParams {
118 #[serde(skip_serializing_if = "Option::is_none")]
119 pub company_id: Option<Uuid>,
120 #[serde(skip_serializing_if = "Option::is_none")]
121 pub cursor: Option<String>,
122 #[serde(skip_serializing_if = "Option::is_none")]
123 pub limit: Option<u32>,
124}
125
126pub type ListUsersResponse = Vec<User>;