Files

38 lines
1.2 KiB
Python
Raw Permalink Normal View History

from fastapi import APIRouter, Depends
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.auth.deps import CurrentUser, get_current_user
from app.database import get_db
from app.models import Department, DeviationCategory, RootCauseCategory
from app.schemas.lookup import LookupsOut, NamedLookupOut
router = APIRouter(tags=["lookups"])
async def _active(db: AsyncSession, model) -> list[NamedLookupOut]:
rows = (
(
await db.execute(
select(model).where(model.is_active.is_(True)).order_by(model.name)
)
)
.scalars()
.all()
)
return [NamedLookupOut.model_validate(r) for r in rows]
@router.get("/lookups", response_model=LookupsOut)
async def get_lookups(
_: CurrentUser = Depends(get_current_user),
db: AsyncSession = Depends(get_db),
) -> LookupsOut:
"""Active departments, deviation categories, and root cause categories
for form dropdowns."""
return LookupsOut(
departments=await _active(db, Department),
deviation_categories=await _active(db, DeviationCategory),
root_cause_categories=await _active(db, RootCauseCategory),
)