from fastapi import APIRouter, Depends, HTTPException from app.auth import verify_api_key from app.models import Note, NoteCreate, NoteUpdate from app.services import NoteService router = APIRouter( prefix="/notes", tags=["notes"], dependencies=[Depends(verify_api_key)], ) _service = NoteService() @router.get("/", response_model=list[Note]) def get_notes(): return _service.list() @router.get("/{note_id}", response_model=Note) def get_note(note_id: str): note = _service.get(note_id) if not note: raise HTTPException(status_code=404, detail="Note not found") return note @router.post("/", response_model=Note, status_code=201) def create_note(payload: NoteCreate): return _service.create(payload.title, payload.content) @router.put("/{note_id}", response_model=Note) def update_note(note_id: str, payload: NoteUpdate): note = _service.update(note_id, payload.title, payload.content) if not note: raise HTTPException(status_code=404, detail="Note not found") return note @router.delete("/{note_id}", status_code=204) def delete_note(note_id: str): deleted = _service.remove(note_id) if not deleted: raise HTTPException(status_code=404, detail="Note not found")