botx_api/api/v3/events/status/
models.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5
6/// Ответ сервера на запрос состояния сообщения
7#[derive(Debug, Serialize, Deserialize, Clone)]
8pub struct EventStatusResponse {
9    /// Результат
10    pub result: EventStatusResult,
11}
12
13
14/// Результат запроса статуса сообщения 
15#[derive(Debug, Serialize, Deserialize, Clone)]
16pub struct EventStatusResult {
17    /// Идентификатор чата
18    pub group_chat_id: Uuid,
19
20    /// Список идентификаторов устройств (uuid), получивших событие
21    pub sent_to: Vec<Uuid>,
22
23    /// Список пользователей, которые прочли сообщение
24    pub read_by: Vec<EventReadBy>,
25
26    /// Список пользователей, которым доставлено сообщение
27    pub received_by: Vec<EventReceivedBy>,
28}
29
30/// Информация о пользователе, который прочел сообщение
31#[derive(Debug, Serialize, Deserialize, Clone)]
32pub struct EventReadBy {
33    /// huid пользователя прочитавшего событие
34    pub user_huid: Uuid,
35
36    /// Время прочтения
37    pub read_at: DateTime<Utc>,
38}
39
40/// Информация о пользователе получившем сообщение
41#[derive(Debug, Serialize, Deserialize, Clone)]
42pub struct EventReceivedBy {
43    /// huid пользователя получившего событие
44    pub user_huid: Uuid,
45
46    /// Время получения
47    pub received_at: DateTime<Utc>,
48}
49
50/// Ошибки при запросе состояния сообщения
51#[derive(Debug, Serialize, Deserialize, Clone)]
52#[serde(tag = "reason")]
53pub enum EventStatusError {
54    /// Событие не найдено (404)
55    #[serde(rename(serialize = "event_not_found", deserialize = "event_not_found"))]
56    EventNotFound(EventNotFound),
57
58    /// Событие не найдено (404)
59    #[serde(rename(serialize = "messaging_service_error", deserialize = "messaging_service_error"))]
60    MessagingServiceError(MessagingServiceError),
61
62    // TODO: добавить десериализацию в HashMap<string, string> когда завезут реализацию
63    /// Неопределенная ошибка, смотрите логи
64    #[serde(other)]
65    Other,
66}
67
68
69/// Событие не найдено (404)
70#[derive(Debug, Serialize, Deserialize, Clone)]
71pub struct EventNotFound {
72    /// Список ошибок
73    pub errors: Vec<String>,
74
75    /// Дополнительная информация об ошибке
76    pub error_data: EventNotFoundData,
77}
78
79#[derive(Debug, Serialize, Deserialize, Clone)]
80pub struct EventNotFoundData {
81    /// uuid сообщения
82    pub sync_id: Uuid
83}
84
85/// Ошибка messaging сервиса при запросе события (500)
86#[derive(Debug, Serialize, Deserialize, Clone)]
87pub struct MessagingServiceError {
88    /// Список ошибок
89    pub errors: Vec<String>,
90
91    /// Дополнительная информация об ошибке
92    pub error_data: MessagingServiceErrorData,
93}
94
95#[derive(Debug, Serialize, Deserialize, Clone)]
96pub struct MessagingServiceErrorData {
97    /// uuid сообщения
98    pub sync_id: Uuid
99}