from fastapi import APIRouter, Depends, HTTPException from sqlmodel import select, Session import alchemy from dependencies import get_session from routers.models import Status router = APIRouter(prefix="/status", tags=["status"]) def _get_status(status: str, session: Session): result = session.get(Status, status) if result is None: result = session.scalar(select(Status).where(Status.name == status)) if result is None: raise HTTPException(status_code=404, detail=f"Status {status!r} not found") return result @router.get("/", response_model=list[Status]) async def get_statuses( session=Depends(get_session)): """Get list of all statuses""" return session.exec(select(alchemy.Status)).all() @router.get("/{status}", response_model=Status, responses={404: {"description": "Not found"}}) async def get_status( status: str, session=Depends(get_session)): return _get_status(status, session)