botx_api/api/v3/users/users_as_csv/
models.rs

1use serde::{Serialize, Deserialize};
2use uuid::Uuid;
3
4use crate::bot::models::UserKind;
5
6/// Источник регистрации пользователя
7#[derive(Debug, Serialize, Deserialize, Clone)]
8pub enum SyncSource {
9    #[serde(rename(serialize = "ad", deserialize = "ad"))]
10    Ad,
11    #[serde(rename(serialize = "admin", deserialize = "admin"))]
12    Admin,
13    #[serde(rename(serialize = "email", deserialize = "email"))]
14    Email,
15    #[serde(rename(serialize = "openid", deserialize = "openid"))]
16    OpenId,
17}
18
19/// Информация о пользователе (укороченная)
20#[derive(Debug, Serialize, Deserialize, Clone)]
21pub struct UserShortInfo {
22    #[serde(rename = "HUID")]
23    pub huid: Uuid,
24    
25    #[serde(rename = "AD Login")]
26    pub ad_login: String,
27
28    #[serde(rename = "Domain")]
29    pub ad_domain: String,
30
31    #[serde(rename = "AD E-mail")]
32    pub ad_email: Option<String>,
33
34    #[serde(rename = "Name")]
35    pub name: String,
36
37    #[serde(rename = "Sync source")]
38    pub sync_source: SyncSource,
39
40    #[serde(rename = "Active")]
41    pub active: bool,
42
43    #[serde(rename = "Kind")]
44    pub kind: UserKind,
45
46    #[serde(rename = "Company")]
47    pub company: Option<String>,
48
49    #[serde(rename = "Department")]
50    pub department: Option<String>,
51
52    #[serde(rename = "Position")]
53    pub position: Option<String>,
54}
55
56/// Ошибки при получении списка пользователей
57#[derive(Debug, Serialize, Deserialize, Clone)]
58#[serde(tag = "reason")]
59pub enum GetUsersAsCsvError {
60    /// Не выбран ни один из типов пользователей
61    #[serde(rename(serialize = "no_user_kind_selected", deserialize = "no_user_kind_selected"))]
62    NoUserKindSelected(NoUserKindSelected),
63
64    // TODO: добавить десериализацию в HashMap<string, string> когда завезут реализацию
65    /// Неопределенная ошибка, смотрите логи
66    #[serde(other)]
67    Other,
68}
69
70/// Не выбран ни один из типов пользователей
71#[derive(Debug, Serialize, Deserialize, Clone)]
72pub struct NoUserKindSelected {
73    /// Список ошибок
74    pub errors: Vec<String>,
75
76    /// Дополнительная информация об ошибке
77    pub error_data: NoUserKindSelectedData,
78}
79
80#[derive(Debug, Serialize, Deserialize, Clone)]
81pub struct NoUserKindSelectedData {
82}