""" Account records endpoint configurations. """ from ApiEvents.abstract_class import RouteFactoryConfig, EndpointFactoryConfig, endpoint_wrapper from ApiEvents.base_request_model import DictRequestModel from Services.PostgresDb.Models.alchemy_response import DictJsonResponse from fastapi import Request, Path, Body from .models import ListOptionsRequestModel @endpoint_wrapper("/account/records/address/list") async def address_list(request: "Request", data: ListOptionsRequestModel): """Handle address list endpoint.""" return { "data": data, "request": str(request.headers), "request_url": str(request.url), "request_base_url": str(request.base_url), } @endpoint_wrapper("/account/records/address/create") async def address_create(request: "Request", data: DictRequestModel): """Handle address creation endpoint.""" return { "data": data, "request": str(request.headers), "request_url": str(request.url), "request_base_url": str(request.base_url), } @endpoint_wrapper("/account/records/address/search") async def address_search(request: "Request", data: DictRequestModel): """Handle address search endpoint.""" return {"data": data} @endpoint_wrapper("/account/records/address/{address_uu_id}") async def address_update( request: Request, address_uu_id: str = Path(..., description="UUID of the address to update"), request_data: DictRequestModel = Body(..., description="Request body"), ): """ Handle address update endpoint. Args: request: FastAPI request object address_uu_id: UUID of the address to update request_data: Request body containing updated address data Returns: DictJsonResponse: Response containing updated address info """ return DictJsonResponse( data={ "address_uu_id": address_uu_id, "data": request_data.root, "request": str(request.headers), "request_url": str(request.url), "request_base_url": str(request.base_url), } ) prefix = "/account/records" # Account Records Router Configuration ACCOUNT_RECORDS_CONFIG = RouteFactoryConfig( name="account_records", prefix=prefix, tags=["Account Records"], include_in_schema=True, endpoints=[ EndpointFactoryConfig( url_prefix=prefix, url_endpoint="/address/list", url_of_endpoint="/account/records/address/list", endpoint="/address/list", method="POST", summary="List Active/Delete/Confirm Address", description="List Active/Delete/Confirm Address", is_auth_required=True, is_event_required=True, endpoint_function=address_list, ), EndpointFactoryConfig( url_prefix=prefix, url_endpoint="/address/create", url_of_endpoint="/account/records/address/create", endpoint="/address/create", method="POST", summary="Create Address with given auth levels", description="Create Address with given auth levels", is_auth_required=False, is_event_required=False, endpoint_function=address_create, ), EndpointFactoryConfig( url_prefix=prefix, url_endpoint="/address/search", url_of_endpoint="/account/records/address/search", endpoint="/address/search", method="POST", summary="Search Address with given auth levels", description="Search Address with given auth levels", is_auth_required=True, is_event_required=True, endpoint_function=address_search, ), EndpointFactoryConfig( url_prefix=prefix, url_endpoint="/address/{address_uu_id}", url_of_endpoint="/account/records/address/{address_uu_id}", endpoint="/address/{address_uu_id}", method="PUT", summary="Update Address with given auth levels", description="Update Address with given auth levels", is_auth_required=True, is_event_required=True, endpoint_function=address_update, ), ], ).as_dict()