from typing import List from fastapi import APIRouter, FastAPI class RouteRegisterController: def __init__(self, app: FastAPI, router_list: List[APIRouter]): self.router_list = router_list self.app = app @staticmethod def add_router_with_event_to_database(router: APIRouter): from schemas import EndpointRestriction # Endpoint operation_id is static now if record exits update() record else create() with EndpointRestriction.new_session() as db_session: for route in router.routes: route_path = str(getattr(route, "path")) route_summary = str(getattr(route, "name")) operation_id = getattr(route, "operation_id", None) if not operation_id: raise ValueError(f"Route {route_path} operation_id is not found") for route_method in [ method.lower() for method in getattr(route, "methods") ]: methods = [method.lower() for method in getattr(route, "methods")] print('methods count : ', len(methods)) print(dict( route_method=route_method, operation_uu_id=operation_id, route_path=route_path, route_summary=route_summary, )) # add_or_update_dict = dict( # endpoint_method=route_method, # endpoint_name=route_path, # endpoint_desc=route_summary.replace("_", " "), # endpoint_function=route_summary, # operation_uu_id=operation_id, # is_confirmed=True, # ) # endpoint_restriction_found = EndpointRestriction.filter_one_system( # EndpointRestriction.operation_uu_id == operation_id, db=db_session, # ).data # if endpoint_restriction_found: # endpoint_restriction_found.update(**add_or_update_dict, db=db_session) # endpoint_restriction_found.save(db=db_session) # else: # restriction = EndpointRestriction.find_or_create(**add_or_update_dict, db=db_session) # if restriction.meta_data.created: # restriction.save(db=db_session) def register_routes(self): for router in self.router_list: self.app.include_router(router) self.add_router_with_event_to_database(router) return self.app