from datetime import datetime from uuid import UUID from pydantic import BaseModel, HttpUrl class SMessage(BaseModel): id: UUID message: str | None = None image_url: str | None = None chat_id: int user_id: int username: str avatar_image: str created_at: datetime answer_id: UUID | None answer_message: str | None answer_image_url: str | None class SMessageRaw(BaseModel): id: UUID message: str | None = None image_url: str | None = None chat_id: int user_id: int created_at: datetime answer_id: UUID | None = None answer_message: str | None = None answer_image_url: str | None = None class SMessageRawList(BaseModel): message_raw_list: list[SMessageRaw] | None class SMessageList(BaseModel): messages: list[SMessage] | None class SLastMessages(BaseModel): messages_loaded: int messages_to_get: int class SChat(BaseModel): chat_id: int chat_for: int chat_name: str created_by: int avatar_image: str class SChangeData(BaseModel): chat_id: int chat_name: str avatar_image: HttpUrl class SChatId(BaseModel): chat_id: int class SAllowedChats(BaseModel): allowed_chats: list[SChat] | None class SPinnedChats(BaseModel): pinned_chats: list[SChat] | None class SPinnedMessages(BaseModel): pinned_messages: list[SMessage] | None class SSendMessage(BaseModel): flag: str message: str image_url: str | None answer: UUID | None class SDeleteMessage(BaseModel): flag: str user_id: int id: UUID class SEditMessage(BaseModel): flag: str user_id: int id: UUID new_message: str | None new_image_url: str | None class SPinMessage(BaseModel): flag: str id: UUID user_id: int class SUnpinMessage(BaseModel): flag: str id: UUID class Responses: class STokenMissingException(BaseModel): detail: str = "Токен отсутствует" class SNotAuthenticated(BaseModel): detail: str = "Not authenticated" class SUserNotFoundException(BaseModel): detail: str = "Юзер не найден" class SUserMustConfirmEmailException(BaseModel): detail: str = "Сначала подтвердите почту" class SBlackPhoenixException(BaseModel): detail: str = "Внутренняя ошибка сервера"