from typing import Optional from ApiLayers.ApiValidations.Request import ListOptions from ApiLayers.Schemas import AddressNeighborhood from Services.PostgresDb.Models.crud_alchemy import Credentials from Services.PostgresDb.Models.mixin import BasicMixin from Services.PostgresDb.Models.pagination import Pagination, PaginationResult, QueryOptions from pydantic import BaseModel listing = True creating = False updating = False new_session = AddressNeighborhood.new_session() new_session_test = AddressNeighborhood.new_session() BasicMixin.creds = Credentials(person_id=10, person_name="Berkay Super User") class QueryModel(BaseModel): neighborhood_name: Optional[str] neighborhood_code: Optional[str] if listing: """List Options and Queries""" AddressNeighborhood.pre_query = AddressNeighborhood.filter_all( AddressNeighborhood.neighborhood_code.icontains("10"), db=new_session, ).query list_options = { "page": 1, "size": 11, "order_field": ["type_code", "neighborhood_code"], "order_type": ["asc", "desc"], "query": { "neighborhood_name__ilike": "A%", "neighborhood_code__contains": "3", "my_other_field__ilike": "B%", "other_other_field__ilike": "C%", } } query_options = QueryOptions(table=AddressNeighborhood, data=list_options, model_query=QueryModel) address_neighborhoods = AddressNeighborhood.filter_all(*query_options.convert(), db=new_session) pagination = Pagination(data=address_neighborhoods) pagination.change(**list_options) pagination_result = PaginationResult(data=address_neighborhoods, pagination=pagination) print("as_dict", pagination_result.pagination.as_dict()) for i, row in enumerate(pagination_result.data): print(i+1, row) # list_options_valid = ListOptions(**list_options) # pagination.page = 9 # pagination.size = 10 # pagination.orderField = ["type_code", "neighborhood_code"] # pagination.orderType = ["asc", "asc"] if creating: """Create Queries""" find_or_create = AddressNeighborhood.find_or_create( neighborhood_code="100", neighborhood_name="Test", locality_id=15334, db=new_session, ) find_or_create.save_via_metadata(db=new_session) find_or_create.destroy(db=new_session) find_or_create.save_via_metadata(db=new_session) find_or_create = AddressNeighborhood.find_or_create( neighborhood_code="100", neighborhood_name="Test", locality_id=15334, db=new_session, ) find_or_create.save_via_metadata(db=new_session) if updating: """Update Queries""" query_of_list_options = {"uu_id": str("33a89767-d2dc-4531-8f66-7b650e22a8a7")} print("query_of_list_options", query_of_list_options) address_neighborhoods_one = AddressNeighborhood.filter_one( *AddressNeighborhood.convert(query_of_list_options), db=new_session, ).data address_neighborhoods_one.update( neighborhood_name="Test 44", db=new_session, ) address_neighborhoods_one.save(db=new_session) address_neighborhoods_one = AddressNeighborhood.filter_one( *AddressNeighborhood.convert(query_of_list_options), db=new_session, ).data_as_dict print("address_neighborhoods_one", address_neighborhoods_one)