import uuid from typing import Annotated from fastapi import APIRouter, Depends from pydantic import BaseModel, ConfigDict from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.auth.deps import get_current_user from app.db import get_db from app.models import Department, User router = APIRouter(prefix="/departments", tags=["departments"]) class DepartmentOut(BaseModel): model_config = ConfigDict(from_attributes=True) id: uuid.UUID name: str @router.get("") async def list_departments( user: Annotated[User, Depends(get_current_user)], db: Annotated[AsyncSession, Depends(get_db)], ) -> list[DepartmentOut]: """Department names for filters and pickers — not secret, any user.""" rows = ( (await db.execute(select(Department).order_by(Department.name))).scalars().all() ) return [DepartmentOut.model_validate(row) for row in rows]