from fastapi import APIRouter, Depends from pydantic import BaseModel from sqlalchemy import select, update, delete from sqlalchemy.ext.asyncio import AsyncSession from app.models import Note from app.dependencies import get_session router = APIRouter() @router.get("/items") async def get_notes(session: AsyncSession = Depends(get_session)): result = await session.execute( select(Note).order_by(Note.id) ) return result.scalars().all() @router.post("/items/create") async def create_note(title: str, session: AsyncSession = Depends(get_session)): note = Note(title=title) session.add(note) await session.commit() return { "id": note.id, "title": note.title, "checked": note.checked } class NoteUpdateReq(BaseModel): id: int title: str checked: bool @router.put("/items/update") async def update_note(req: NoteUpdateReq, session: AsyncSession = Depends(get_session)): new_note = Note( id=req.id, title=req.title, checked=req.checked ) await session.execute( update(Note).where(Note.id == req.id).values(new_note) ) await session.commit() return { "id": new_note.id, "title": new_note.title, "checked": new_note.checked } @router.delete("/items/delete") async def delete_note(id: int, session: AsyncSession = Depends(get_session)): await session.execute( delete(Note).where(Note.id == id) ) await session.commit() return 204 __all__ = ["router"]