more services added

This commit is contained in:
2025-05-16 14:55:50 +03:00
parent 4606f0721d
commit 5f7cb35ccc
95 changed files with 2600 additions and 717 deletions

View File

@@ -1,9 +1,11 @@
from typing import Optional, Union, Type, Any, Dict, TypeVar
from pydantic import BaseModel
from sqlalchemy.orm import Query
from sqlalchemy import asc, desc
from .pagination import default_paginate_config
from .base import PostgresResponse
from .pagination import PaginationConfig
T = TypeVar("T")
@@ -25,7 +27,7 @@ class Pagination:
MAX_SIZE = default_paginate_config.MAX_SIZE
def __init__(self, data: PostgresResponse):
self.data = data
self.query = data
self.size: int = self.DEFAULT_SIZE
self.page: int = 1
self.orderField: Optional[Union[tuple[str], list[str]]] = ["uu_id"]
@@ -45,20 +47,20 @@ class Pagination:
else self.DEFAULT_SIZE
)
self.page = config.page
self.orderField = config.order_field
self.orderType = config.order_type
self.orderField = config.orderField
self.orderType = config.orderType
self._update_page_counts()
def feed(self, data: PostgresResponse) -> None:
"""Calculate pagination based on data source."""
self.data = data
self.query = data
self._update_page_counts()
def _update_page_counts(self) -> None:
"""Update page counts and validate current page."""
if self.data:
self.total_count = self.data.count
self.all_count = self.data.total_count
if self.query:
self.total_count = self.query.count()
self.all_count = self.query.count()
self.size = (
self.size
@@ -131,11 +133,12 @@ class PaginationResult:
self,
data: PostgresResponse,
pagination: Pagination,
is_list: bool = True,
response_model: Type[T] = None,
):
self._query = data.query
self._query = data
self.pagination = pagination
self.response_type = data.is_list
self.response_type = is_list
self.limit = self.pagination.size
self.offset = self.pagination.size * (self.pagination.page - 1)
self.order_by = self.pagination.orderField