""" Account 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.token_event_middleware import TokenEventMiddleware from ApiLayers.ApiValidations.Response.default_response import EndpointSuccessListResponse from .function_handlers import ( AddressListFunctions, AddressUpdateFunctions, AddressSearchFunctions, AddressCreateFunctions, ) from .api_events import AddressSuperUserEvents AddressListEventMethods = MethodToEvent( name="AddressListEventMethods", events={ AddressSuperUserEvents.AddressListEvents.key: AddressSuperUserEvents.AddressListEvents, }, headers=[], errors=[], decorators_list=[TokenEventMiddleware.event_required], url="/list", method="POST", summary="List all accounts by given previligous", description="List all accounts by given previligous", ) def account_list_event_endpoint( request: Request, data: EndpointBaseRequestModel ) -> Dict[str, Any]: context_retriever = ContextRetrievers(func=account_list_event_endpoint) event_2_catch = AddressListEventMethods.retrieve_event( event_function_code=f"{AddressSuperUserEvents.AddressListEvents.key}" ) context_retriever.RESPONSE_VALIDATOR = event_2_catch.RESPONSE_VALIDATOR data = event_2_catch.REQUEST_VALIDATOR(**data.data) AddressListFunctions.context_retriever = context_retriever pagination_result = event_2_catch.endpoint_callable(data=data) return EndpointSuccessListResponse( code=event_2_catch.static_key, lang=context_retriever.token.lang ).as_dict( data=pagination_result.data, pagination=pagination_result.pagination.as_dict() ) AddressListEventMethods.endpoint_callable = ( account_list_event_endpoint ) AddressCreateEventMethods = MethodToEvent( name="AddressCreateEventMethods", events={ AddressSuperUserEvents.AddressCreateEvents.key: AddressSuperUserEvents.AddressCreateEvents, }, headers=[], errors=[], decorators_list=[TokenEventMiddleware.event_required], url="/create", method="POST", summary="Create Address via given data and previligous", description="Create Address via given data and previligous", ) def account_create_event_endpoint( request: Request, data: EndpointBaseRequestModel ) -> Dict[str, Any]: context_retriever = ContextRetrievers(func=account_create_event_endpoint) event_2_catch = AddressCreateEventMethods.retrieve_event( event_function_code=f"{AddressSuperUserEvents.AddressCreateEvents.key}" ) context_retriever.RESPONSE_VALIDATOR = event_2_catch.RESPONSE_VALIDATOR data = event_2_catch.REQUEST_VALIDATOR(**data.data) AddressCreateFunctions.context_retriever = context_retriever pagination_result = event_2_catch.endpoint_callable(data=data) return EndpointSuccessListResponse( code=event_2_catch.static_key, lang=context_retriever.token.lang ).as_dict( data=pagination_result.data, pagination=pagination_result.pagination.as_dict() ) AddressCreateEventMethods.endpoint_callable = ( account_create_event_endpoint ) AddressUpdateEventMethods = MethodToEvent( name="AddressUpdateEventMethods", events={ AddressSuperUserEvents.AddressUpdateEvents.key: AddressSuperUserEvents.AddressUpdateEvents, }, headers=[], errors=[], decorators_list=[TokenEventMiddleware.event_required], url="/update", method="POST", summary="Update Address via given data and previligous", description="Update Address via given data and previligous", ) def account_update_event_endpoint( request: Request, data: EndpointBaseRequestModel ) -> Dict[str, Any]: context_retriever = ContextRetrievers(func=account_update_event_endpoint) event_2_catch = AddressUpdateEventMethods.retrieve_event( event_function_code=f"{AddressSuperUserEvents.AddressUpdateEvents.key}" ) context_retriever.RESPONSE_VALIDATOR = event_2_catch.RESPONSE_VALIDATOR data = event_2_catch.REQUEST_VALIDATOR(**data.data) AddressUpdateFunctions.context_retriever = context_retriever pagination_result = event_2_catch.endpoint_callable(data=data) return EndpointSuccessListResponse( code=event_2_catch.static_key, lang=context_retriever.token.lang ).as_dict( data=pagination_result.data, pagination=pagination_result.pagination.as_dict() ) AddressUpdateEventMethods.endpoint_callable = ( account_update_event_endpoint ) AddressSearchEventMethods = MethodToEvent( name="AddressSearchEventMethods", events={ AddressSuperUserEvents.AddressSearchEvents.key: AddressSuperUserEvents.AddressSearchEvents, }, headers=[], errors=[], decorators_list=[TokenEventMiddleware.event_required], url="/search", method="POST", summary="Search Address via given data and previligous", description="Search Address via given data and previligous", ) def address_search_event_endpoint( request: Request, data: EndpointBaseRequestModel ) -> Dict[str, Any]: context_retriever = ContextRetrievers(func=account_update_event_endpoint) event_2_catch = AddressUpdateEventMethods.retrieve_event( event_function_code=f"{AddressSuperUserEvents.AddressSearchEvents.key}" ) context_retriever.RESPONSE_VALIDATOR = event_2_catch.RESPONSE_VALIDATOR data = event_2_catch.REQUEST_VALIDATOR(**data.data) AddressSearchFunctions.context_retriever = context_retriever pagination_result = event_2_catch.endpoint_callable(data=data) return EndpointSuccessListResponse( code=event_2_catch.static_key, lang=context_retriever.token.lang ).as_dict( data=pagination_result.data, pagination=pagination_result.pagination.as_dict() ) AddressSearchEventMethods.endpoint_callable = ( address_search_event_endpoint )