smbcloud_model/
signup.rs

1use {
2    crate::account::Data,
3    serde::{Deserialize, Serialize},
4    std::fmt::{Display, Formatter},
5    tsync::tsync,
6};
7
8pub struct SignupArgs {
9    pub email: String,
10    pub password: Option<String>,
11    pub password_confirmation: Option<String>,
12    pub authorizations_attributes: Vec<Provider>,
13}
14
15#[derive(Debug, Serialize)]
16pub struct Provider {
17    pub uid: String,
18    pub provider: i8,
19}
20
21#[derive(Debug, Serialize)]
22pub struct SignupGithubParams {
23    pub user: SignupUserGithub,
24}
25
26#[derive(Debug, Serialize)]
27pub struct SignupEmailParams {
28    pub user: SignupUserEmail,
29}
30
31#[derive(Debug, Serialize)]
32pub struct SignupUserGithub {
33    pub email: String,
34    pub authorizations_attributes: Vec<Provider>,
35}
36
37#[derive(Debug, Serialize)]
38pub struct SignupUserEmail {
39    pub email: String,
40    pub password: String,
41}
42
43#[derive(Debug, Serialize, Deserialize)]
44#[tsync]
45pub struct SignupResult {
46    pub code: Option<i32>,
47    pub message: String,
48    pub data: Option<Data>,
49}
50
51#[derive(Debug, Serialize, Deserialize)]
52pub struct GithubUser {
53    pub email: Option<String>,
54    pub name: String,
55}
56
57#[derive(Debug, Serialize, Deserialize)]
58pub struct GithubEmail {
59    pub email: String,
60    primary: bool,
61    verified: bool,
62    visibility: Option<String>,
63}
64
65impl Display for GithubEmail {
66    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
67        write!(f, "{}", self.email)
68    }
69}
70
71#[cfg(test)]
72mod tests {}