from typing import List, Optional from fastapi import APIRouter, Depends from fastapi.responses import JSONResponse from pydantic import BaseModel from src.auth.service import JWTBearer from src.scope.router import router as scope_router from src.scope_equipment.router import router as scope_equipment_router from src.overhaul.router import router as overhaul_router from src.calculation_time_constrains.router import router as calculation_time_constrains_router class ErrorMessage(BaseModel): msg: str class ErrorResponse(BaseModel): detail: Optional[List[ErrorMessage]] api_router = APIRouter( default_response_class=JSONResponse, responses={ 400: {"model": ErrorResponse}, 401: {"model": ErrorResponse}, 403: {"model": ErrorResponse}, 404: {"model": ErrorResponse}, 500: {"model": ErrorResponse}, }, ) @api_router.get("/healthcheck", include_in_schema=False) def healthcheck(): return {"status": "ok"} authenticated_api_router = APIRouter(dependencies=[Depends(JWTBearer())], ) # overhaul data authenticated_api_router.include_router( overhaul_router, prefix="/overhauls", tags=["overhaul"]) # Scope data authenticated_api_router.include_router( scope_router, prefix="/scopes", tags=["scope"]) authenticated_api_router.include_router( scope_equipment_router, prefix="/scope-equipments", tags=["scope_equipment"] ) # calculation calculation_router = APIRouter(prefix="/calculation", tags=["calculations"]) # Time constrains calculation_router.include_router( calculation_time_constrains_router, prefix="/time-constraint", tags=["time_constraint"]) # Target reliability # Budget Constrain authenticated_api_router.include_router( calculation_router ) api_router.include_router(authenticated_api_router)