| from typing import Any | |
| from fastapi import HTTPException | |
| def handle_service_result( | |
| success: bool, result: dict[str, Any] | list[Any] | str | None, not_found_msg: str = "not found" | |
| ) -> dict[str, Any] | list[Any]: | |
| """ | |
| Standardizes the error checking for service layer responses. | |
| If success is False, parses the result to raise a 404 or 500 HTTPException. | |
| Returns the result directly if successful. | |
| """ | |
| if not success: | |
| error_msg = "" | |
| detail = result | |
| if isinstance(result, dict) and "error" in result: | |
| error_msg = str(result["error"]).lower() | |
| elif isinstance(result, str): | |
| error_msg = result.lower() | |
| detail = {"error": result} | |
| if not_found_msg.lower() in error_msg: | |
| raise HTTPException(status_code=404, detail=detail) | |
| raise HTTPException(status_code=500, detail=detail) | |
| return result # type: ignore | |