use serde::{Serialize, Deserialize};
use uuid::Uuid;
use crate::bot::models::ChatType;
#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
#[builder(setter(into, prefix = "with", strip_option))]
pub struct CreateChatRequest {
pub name : String,
#[builder(default)]
pub description: Option<String>,
pub chat_type: ChatType,
pub members: Vec<Uuid>,
#[builder(default)]
pub avatar: Option<String>,
pub shared_history: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct CreateChatResponse {
pub result: CreateChatResult,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct CreateChatResult {
pub chat_id: Uuid,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(tag = "reason")]
pub enum CreateChatError {
#[serde(rename(serialize = "chat_not_found", deserialize = "chat_not_found"))]
ChatCreationIsProhibited(ChatCreationIsProhibited),
#[serde(other)]
Other,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ChatCreationIsProhibited {
pub errors: Vec<String>,
pub error_data: ChatCreationIsProhibitedData,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ChatCreationIsProhibitedData {
pub bot_id: Uuid,
}