events cluster updated with PageInfo

This commit is contained in:
2025-02-03 20:53:31 +03:00
parent f0613e96e8
commit b67090087a
51 changed files with 1041 additions and 286 deletions

View File

@@ -136,7 +136,9 @@ class PaginationResult:
pagination: Pagination state
"""
def __init__(self, data: PostgresResponse, pagination: Pagination, response_model: Any = None):
def __init__(
self, data: PostgresResponse, pagination: Pagination, response_model: Any = None
):
self._query = data.query
self.pagination = pagination
self.response_type = data.is_list
@@ -192,7 +194,12 @@ class PaginationResult:
class QueryOptions:
def __init__(self, table, data: Union[dict, ListOptions] = None, model_query: Optional[Any] = None):
def __init__(
self,
table,
data: Union[dict, ListOptions] = None,
model_query: Optional[Any] = None,
):
self.table = table
self.data = data
self.model_query = model_query
@@ -214,7 +221,9 @@ class QueryOptions:
cleaned_model = self.model_query(**cleaned_query)
for i in cleaned_query:
if hasattr(cleaned_model, i):
last_dict[str(cleaned_query_by_model[str(i)][0])] = str(cleaned_query_by_model[str(i)][1])
last_dict[str(cleaned_query_by_model[str(i)][0])] = str(
cleaned_query_by_model[str(i)][1]
)
self.data.query = last_dict
def convert(self) -> tuple:

View File

@@ -4,7 +4,11 @@ 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 Services.PostgresDb.Models.pagination import (
Pagination,
PaginationResult,
QueryOptions,
)
from pydantic import BaseModel
@@ -37,24 +41,30 @@ if listing:
"size": 11,
"order_field": ["type_code", "neighborhood_code"],
"order_type": ["asc", "desc"],
"query": {
"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)
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)
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)
print(i + 1, row)
# list_options_valid = ListOptions(**list_options)
# pagination.page = 9