from typing import Union, Optional from ApiLayers.ApiValidations.Request import ListOptions from Events.base_request_model import BaseRouteModel, ListOptionsBase from Services.PostgresService.controllers.pagination_controllers import PaginationResult from ApiLayers.Schemas import AddressNeighborhood class Handlers: """Class for handling authentication functions""" @classmethod # Requires no auth context def handle_function(cls, **kwargs): """Handle function with kwargs""" return class AddressListFunctions(BaseRouteModel): @classmethod def template_example_function_list( cls, data: Optional[Union[dict, ListOptions]] ) -> PaginationResult: list_options_base = ListOptionsBase( table=AddressNeighborhood, list_options=data, model_query=None, ) db_session, query_options = list_options_base.init_list_options() if cls.context_retriever.token.is_occupant: AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("10"), db=db_session, ).query elif cls.context_retriever.token.is_employee: AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("9"), db=db_session, ).query records = AddressNeighborhood.filter_all( *query_options.convert(), db=db_session ) return list_options_base.paginated_result( records=records, response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None), ) class AddressCreateFunctions(BaseRouteModel): @classmethod def template_example_function_list( cls, data: Optional[Union[dict, ListOptions]] ) -> PaginationResult: from ApiLayers.Schemas import AddressNeighborhood list_options_base = ListOptionsBase( table=AddressNeighborhood, list_options=data, model_query=None, ) db_session, query_options = list_options_base.init_list_options() if cls.context_retriever.token.is_occupant: AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("10"), db=db_session, ).query elif cls.context_retriever.token.is_employee: AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("9"), db=db_session, ).query records = AddressNeighborhood.filter_all( *query_options.convert(), db=db_session ) return list_options_base.paginated_result( records=records, response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None), ) class AddressSearchFunctions(BaseRouteModel): """Event methods for searching addresses. This class handles address search functionality including text search and filtering. """ @classmethod def template_example_function_list( cls, data: Optional[Union[dict, ListOptions]] ) -> PaginationResult: from ApiLayers.Schemas import AddressNeighborhood list_options_base = ListOptionsBase( table=AddressNeighborhood, list_options=data, model_query=None, ) db_session, query_options = list_options_base.init_list_options() if cls.context_retriever.token.is_occupant: AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("10"), db=db_session, ).query elif cls.context_retriever.token.is_employee: AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("9"), db=db_session, ).query records = AddressNeighborhood.filter_all( *query_options.convert(), db=db_session ) return list_options_base.paginated_result( records=records, response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None), ) class AddressUpdateFunctions(BaseRouteModel): @classmethod def template_example_function_list( cls, data: Optional[Union[dict, ListOptions]] ) -> PaginationResult: from ApiLayers.Schemas import AddressNeighborhood list_options_base = ListOptionsBase( table=AddressNeighborhood, list_options=data, model_query=None, ) db_session, query_options = list_options_base.init_list_options() if cls.context_retriever.token.is_occupant: AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("10"), db=db_session, ).query elif cls.context_retriever.token.is_employee: AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("9"), db=db_session, ).query records = AddressNeighborhood.filter_all( *query_options.convert(), db=db_session ) return list_options_base.paginated_result( records=records, response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None), ) class AddressSuperUserFunctions: AddressListFunctions = AddressListFunctions AddressCreateFunctions = AddressCreateFunctions AddressSearchFunctions = AddressSearchFunctions AddressUpdateFunctions = AddressUpdateFunctions