import uuid from typing import Any from fastapi import APIRouter, HTTPException from sqlmodel import func, select from app.api.deps import CurrentUser, SessionDep from app.models import MessageCreate, MessagePublic, MessagesPublic, Message router = APIRouter() @router.post("/", response_model=Message) def create_message(*, session: SessionDep, Message_in: MessageCreate) -> Any: """ Create new message. """ message = Message.model_validate(Message_in) session.add(message) session.commit() session.refresh(message) return message @router.get("/", response_model=MessagesPublic) def read_messages( session: SessionDep, current_user: CurrentUser, skip: int = 0, limit: int = 100 ) -> Any: count_statement = select(func.count()).select_from(Message) count = session.exec(count_statement).one() statement = select(Message).offset(skip).limit(limit) messages = session.exec(statement).all() return MessagesPublic(data=messages, count=count) @router.delete("/{id}") def delete_item( session: SessionDep, current_user: CurrentUser, id: uuid.UUID ) -> Message: """ Delete an item. """ message = session.get(Message, id) if not message: raise HTTPException(status_code=404, detail="Message not found") session.delete(message) session.commit() return Message(message="Message deleted successfully")