from __future__ import annotations from fastapi import HTTPException, status def build_error_detail( *, code: str, message: str, details: dict | None = None, ) -> dict: payload = { "code": code, "message": message, } if details: payload["details"] = details return payload def raise_conflict( *, code: str, message: str, details: dict | None = None, ) -> None: raise HTTPException( status_code=status.HTTP_409_CONFLICT, detail=build_error_detail(code=code, message=message, details=details), ) def raise_unprocessable( *, code: str, message: str, details: dict | None = None, ) -> None: raise HTTPException( status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=build_error_detail(code=code, message=message, details=details), )