""" Router dependencies for the IAM module Classes: - List: Description - Classes: Description Functions: - List: Description - Functions: Description """ from typing import Annotated, Optional from fastapi import Depends, Query from src.database import db_dependency from src.iam.models import Group from src.iam.exceptions import GroupNotFoundException, PermNotFoundException from src.iam.schemas import GroupIDMixin, PermIDMixin def get_group_model_query(db: db_dependency, group_id: Annotated[int, Query(gt=0)]) -> type[Group]: group_model = db.get(Group, group_id) if group_model is None: raise GroupNotFoundException(group_id) return group_model group_model_query_dependency = Annotated[type[Group], Depends(get_group_model_query)] def get_group_model_body(db: db_dependency, request_model: Optional[GroupIDMixin] = None) -> type[Group]: group_id = getattr(request_model, "group_id", None) if group_id is None: raise GroupNotFoundException() group_model = db.get(Group, group_id) if group_model is None: raise GroupNotFoundException(group_id) return group_model group_model_body_dependency = Annotated[type[Group], Depends(get_group_model_body)] def get_perm_model_body(db: db_dependency, request_model: Optional[PermIDMixin] = None) -> type[Group]: perm_id = getattr(request_model, "permission_id", None) if perm_id is None: raise PermNotFoundException group_model = db.get(Group, perm_id) if group_model is None: raise PermNotFoundException(perm_id) return group_model perm_model_body_dependency = Annotated[type[Group], Depends(get_perm_model_body)]