hobbit_core.pagination 源代码

from mypy_extensions import TypedDict
from typing import Union, List

from flask_sqlalchemy import model

from marshmallow import fields
from marshmallow import validate
from webargs.fields import DelimitedList

from .utils import ParamsDict


#: Base params for list view func.
PageParams = ParamsDict(
    page=fields.Int(missing=1, required=False,
                    validate=validate.Range(min=1, max=2**31)),
    page_size=fields.Int(
        missing=10, required=False, validate=validate.Range(min=5, max=100)),
    order_by=DelimitedList(
        fields.String(validate=validate.Regexp(r'^-?[a-zA-Z_]*$')),
        required=False, missing=['-id']),
)
"""Base params for list view func which contains ``page``、``page_size``、\
   ``order_by`` params.

    Example::

        @use_kwargs(PageParams)
        def list_users(page, page_size, order_by):
            pass
"""


class PaginationType(TypedDict):
    items: list
    page: int
    page_size: int
    total: int