from datetime import datetime from typing import Literal from pydantic import BaseModel, ConfigDict, Field from app.messages.models import MessageType class MessageRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: int chat_id: int sender_id: int reply_to_message_id: int | None forwarded_from_message_id: int | None type: MessageType text: str | None created_at: datetime updated_at: datetime class MessageCreateRequest(BaseModel): chat_id: int type: MessageType = MessageType.TEXT text: str | None = Field(default=None, max_length=4096) client_message_id: str | None = Field(default=None, min_length=8, max_length=64) reply_to_message_id: int | None = None class MessageUpdateRequest(BaseModel): text: str = Field(min_length=1, max_length=4096) class MessageStatusUpdateRequest(BaseModel): chat_id: int message_id: int status: Literal["message_delivered", "message_read"] class MessageForwardRequest(BaseModel): target_chat_id: int