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), )