""" Validation related API endpoints. """ from typing import Any, Dict from fastapi import Request from Events.Engine.abstract_class import MethodToEvent from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers from ApiLayers.Middleware.auth_middleware import MiddlewareModule from .api_events import validation_event, menu_event, cluster_event, page_event from .function_handlers import RetrieveValidation, RetrievePage ValidationEventMethods = MethodToEvent( name="ValidationEventMethods", events={validation_event.key: validation_event}, headers=[], errors=[], url="/validations", method="POST", decorators_list=[MiddlewareModule.auth_required], summary="Get Validations by event function code", description="Get Validations by event function code by All, Header, Validation & request url", ) def validations_endpoint( request: Request, data: EndpointBaseRequestModel ) -> Dict[str, Any]: function = ValidationEventMethods.retrieve_event( event_function_code=f"{validation_event.key}" ) data = function.REQUEST_VALIDATOR(**data.data) RetrieveValidation.context_retriever = ContextRetrievers(func=validations_endpoint) return function.endpoint_callable(request=request, data=data) ValidationEventMethods.endpoint_callable = validations_endpoint MenuEventMethods = MethodToEvent( name="MenuEventMethods", events={menu_event.key: menu_event}, headers=[], errors=[], url="/menu", method="POST", decorators_list=[MiddlewareModule.auth_required], summary="Get Left Menu of the user", description="Get Left Menu of the user", ) def menu_endpoint(request: Request, data: EndpointBaseRequestModel) -> Dict[str, Any]: function = MenuEventMethods.retrieve_event(event_function_code=f"{menu_event.key}") data = function.REQUEST_VALIDATOR(**data.data) RetrieveValidation.context_retriever = ContextRetrievers(func=menu_endpoint) return function.endpoint_callable(request=request, data=data) MenuEventMethods.endpoint_callable = menu_endpoint # Cluster Event ClusterEventMethods = MethodToEvent( name="ClusterEventMethods", events={cluster_event.key: cluster_event}, headers=[], errors=[], url="/cluster", method="POST", decorators_list=[MiddlewareModule.auth_required], summary="Get Left Menu of the user", description="Get Left Menu of the user", ) def cluster_endpoint( request: Request, data: EndpointBaseRequestModel ) -> Dict[str, Any]: function = ClusterEventMethods.retrieve_event( event_function_code=f"{cluster_event.key}" ) data = function.REQUEST_VALIDATOR(**data.data) RetrievePage.context_retriever = ContextRetrievers(func=cluster_endpoint) return function.endpoint_callable(request=request, data=data) ClusterEventMethods.endpoint_callable = cluster_endpoint # Page Event PageEventMethods = MethodToEvent( name="PageEventMethods", events={page_event.key: page_event}, headers=[], errors=[], url="/page", method="POST", decorators_list=[MiddlewareModule.auth_required], summary="Get Left Menu of the user", description="Get Left Menu of the user", ) def page_endpoint(request: Request, data: EndpointBaseRequestModel) -> Dict[str, Any]: function = PageEventMethods.retrieve_event(event_function_code=f"{page_event.key}") data = function.REQUEST_VALIDATOR(**data.data) RetrievePage.context_retriever = ContextRetrievers(func=page_endpoint) return function.endpoint_callable(request=request, data=data) PageEventMethods.endpoint_callable = page_endpoint