Source code for loadero_python.resources.pagination

"""Loadero resource pagination.

Pagination describes and provides a way to manage large read all operation
responses
"""

from typing import Dict, List
from .resource import LoaderoResourceParams, from_dict_as_list, from_dict_as_new


[docs] class PaginationParams(LoaderoResourceParams): """PaginationParams describes Loadero pagination attributes.""" def __init__(self): super().__init__( attribute_map={ "limit": "_limit", "offset": "_offset", "page": "_page", "total_pages": "_total_pages", "total_items": "_total_items", } ) self._limit = None self._offset = None self._page = None self._total_pages = None self._total_items = None @property def limit(self) -> int: """Maximum number of items to returned per page. Returns: int: Maximum number of items to returned per page. """ return self._limit @property def offset(self) -> int: """Offset of the first item to in page. Returns: int: Offset of the first item to return. """ return self._offset @property def page(self) -> int: """Index of the returned page. Returns: int: Index of the returned page. """ return self._page @property def total_pages(self) -> int: """Total number of pages. Returns: int: Total number of pages. """ return self._total_pages @property def total_items(self) -> int: """Total number of items. Returns: int: Total number of items. """ return self._total_items
[docs] class PagedResponse(LoaderoResourceParams): """PagedResponse is a generic representation of Loadero read all responses.""" def __init__(self, resource_params_class: type): super().__init__( attribute_map={ "pagination": "_pagination", "results": "_results", "filter": "_filter", }, custom_deserializers={ "pagination": from_dict_as_new(PaginationParams), "results": from_dict_as_list(resource_params_class), }, ) self._pagination = None self._results = None self._filter = None @property def pagination(self) -> PaginationParams: """Pagination information of request results. Returns: PaginationParams: Pagination params. """ return self._pagination @property def results(self) -> List[LoaderoResourceParams]: """Request results. Returns: List[LoaderoResourceParams]: Results. """ if self._results is None: return [] return self._results @property def filter(self) -> Dict[any, any]: """Filters applied in request. Filter keys and values are NOT parsed to their python types. Returns: Dict[any, any]: Filters. """ return self._filter