init
This commit is contained in:
38
backend/app/routers/messages.py
Normal file
38
backend/app/routers/messages.py
Normal file
@@ -0,0 +1,38 @@
|
||||
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)
|
||||
]
|
||||
Reference in New Issue
Block a user