"""# Summary Item route handlers — names must match openapi.yaml operationIds. """ from fastapi import Request from fastapi.responses import JSONResponse from domain.item.models import Item def svc(request: Request): """Resolve the item CRUD service from app state.""" return request.app.state.db_resources["item_svc"] async def create_item(request: Request, body: dict): """Create an item from the request body.""" data = body.model_dump() if hasattr(body, "model_dump") else dict(body) doc = await svc(request).create(Item(**data)) return JSONResponse(status_code=201, content=doc.model_dump(mode="json", by_alias=True)) async def get_item(request: Request, id: str): """Fetch one item by id.""" doc = await svc(request).read(id) if doc is None: return JSONResponse(status_code=404, content={"detail": "item not found"}) return doc.model_dump(mode="json", by_alias=True) async def list_items(request: Request): """List all items.""" docs = await svc(request).search({}) return [d.model_dump(mode="json", by_alias=True) for d in docs] async def delete_item(request: Request, id: str): """Delete one item by id.""" ok = await svc(request).delete(id) if not ok: return JSONResponse(status_code=404, content={"detail": "item not found"}) return {"deleted": True}