more services added
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user