35 lines
1004 B
Python
35 lines
1004 B
Python
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)
|