from __future__ import annotations from typing import List, Optional import aiosqlite from fastapi import APIRouter, Depends, Query, Request import persons from common import Page, ProblemDetails from main import get_db # temporary during extraction router = APIRouter(prefix="/persons", tags=["persons"]) @router.get("", response_model=Page[persons.Person], operation_id="listPersons", summary="List persons (paginated)") async def list_persons( q: Optional[str] = Query(default=None, description="Optional case-insensitive name filter (applied after page read; may be pushed to SQL in the future)."), cursor: Optional[str] = Query(default=None, description="Opaque cursor for pagination. Pass the value returned in nextCursor to fetch the next page."), limit: int = Query(50, ge=1, le=200, description="Maximum number of items to return (1-200)."), conn: aiosqlite.Connection = Depends(get_db), request: Request | None = None, ) -> Page[persons.Person]: raise NotImplementedError("list_persons extraction pending") @router.post("", response_model=persons.Person, operation_id="createPerson", summary="Create a person") async def create_person( person: persons.Person, conn: aiosqlite.Connection = Depends(get_db) ) -> persons.Person: raise NotImplementedError("create_person extraction pending")