Source code for zsl.db.helpers.pagination

"""
:mod:`zsl.db.helpers.pagination`
--------------------------------
"""
from typing import Dict, Union

from sqlalchemy.orm.query import Query

from zsl.db.model.app_model import AppModel

FIRST_PAGE = 1
DEFAULT_PAGE_SIZE = 25






[docs] class PaginationRequest(AppModel): def __init__(self, raw=None, id_name='id', hints=None): if raw is None: raw = {'page_no': FIRST_PAGE, 'page_size': DEFAULT_PAGE_SIZE} super().__init__(raw, id_name, hints) self.page_no = int(self.page_no) if self.page_no else FIRST_PAGE self.page_size = int(self.page_size) if self.page_size else DEFAULT_PAGE_SIZE
[docs] @staticmethod def create(page_no: int = FIRST_PAGE, page_size: int = DEFAULT_PAGE_SIZE) -> 'PaginationRequest': return PaginationRequest({'page_no': page_no, 'page_size': page_size})
[docs] class PaginationResponse(AppModel): def __init__(self, record_count, page_size, pagination): # type: (int, int, PaginationRequest)->None super().__init__({}) self.record_count = record_count max_page_size = pagination.page_size self.page_count = (record_count + max_page_size - 1) // max_page_size self.page_size = page_size self.max_page_size = max_page_size self.page_no = pagination.page_no