from uuid import UUID from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from sqlalchemy.orm import selectinload from ..database import get_db from ..models.message import Message from ..schemas.message import MessageResponse router = APIRouter(prefix="/api/rooms", tags=["messages"]) @router.get("/{room_id}/messages", response_model=list[MessageResponse]) async def get_messages( room_id: UUID, limit: int = 50, db: AsyncSession = Depends(get_db), ): result = await db.execute( select(Message) .options(selectinload(Message.user)) .where(Message.room_id == room_id) .order_by(Message.created_at.desc()) .limit(limit) ) messages = result.scalars().all() return [ MessageResponse( id=msg.id, room_id=msg.room_id, user_id=msg.user_id, username=msg.user.username, text=msg.text, created_at=msg.created_at, ) for msg in reversed(messages) ]