use serde::{Serialize, Deserialize};
use uuid::Uuid;
use super::chat_type::ChatType;
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct ChatCreatedCommandData {
pub group_chat_id: Uuid,
pub chat_type: ChatType,
pub name: String,
pub creator: Uuid,
pub members: Vec<ChatCreatedCommandMembers>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct ChatDeletedByUserCommandData {
pub group_chat_id: Uuid,
pub user_huid: Uuid,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct ChatCreatedCommandMembers {
pub huid: Uuid,
pub name: Option<String>,
pub user_kind: UserKind,
pub admin: bool,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, Copy)]
pub enum UserKind {
#[serde(rename(serialize = "user", deserialize = "user"))]
User,
#[serde(rename(serialize = "cts_user", deserialize = "cts_user"))]
CtsUser,
#[serde(rename(serialize = "unregistered", deserialize = "unregistered"))]
Unregistered,
#[serde(rename(serialize = "botx", deserialize = "botx"))]
Botx
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct AddedToChatCommandData {
pub added_members: Vec<Uuid>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct DeletedFromChatCommandData {
pub deleted_members: Vec<Uuid>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct LeftFromChatCommandData {
pub left_members: Vec<Uuid>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct SmartappEventCommandData {
#[serde(rename(serialize = "ref", deserialize = "ref"))] pub request_ref: Uuid,
pub smartapp_id: Uuid,
pub data: serde_json::Value,
pub opts: serde_json::Value,
pub smartapp_api_version: u16,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct InternalBotNotificationCommandData {
pub data: serde_json::Value,
pub opts: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct CtsLoginCommandData {
pub user_huid: Uuid,
pub cts_id: Uuid,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct CtsLogoutCommandData {
pub user_huid: Uuid,
pub cts_id: Uuid,
}