from datetime import datetime from typing import Literal from fastapi import APIRouter, Depends, Response from core.helpers.auth.helpers import get_current_user from core.models.message.db import MPProfile from core.models.message.requests import SendMessageRequest, ListMessagesRequest from core.services import message_service router = APIRouter(prefix="/message", tags=["message"]) @router.post("") async def send_message(response: Response, message: SendMessageRequest, user: MPProfile = Depends(get_current_user)): response.status_code = 201 return (await message_service.send_message(user, message)).model_dump(exclude_none=True, by_alias=True) @router.get("") async def list_messages( chat_id: int, from_date: datetime | None = None, to_date: datetime | None = None, order_by: Literal['desc'] | Literal['asc'] = 'desc', user: MPProfile = Depends(get_current_user)): query = ListMessagesRequest(chat_id=chat_id, from_date=from_date, to_date=to_date, order_by=order_by) return await message_service.list_messages(user, query)