This commit is contained in:
2021-11-14 10:38:47 +03:00
commit 30835e31fa
43 changed files with 2366 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
from typing import Protocol, TypeVar, Any, Generic, Sequence, runtime_checkable
from dataclasses import asdict
from fastapi_pagination import Page, Params
from fastapi_pagination.bases import AbstractParams
@runtime_checkable
class ToDict(Protocol):
def dict(self) -> dict:
...
T = TypeVar('T', ToDict, Any)
class CustomPage(Page[T], Generic[T]):
@classmethod
def create(
cls,
items: Sequence[T],
total: int,
params: AbstractParams,
) -> Page[T]:
if not isinstance(params, Params):
raise ValueError("Page should be used with Params")
return cls(
total=total,
items=[item.dict() for item in items],
page=params.page,
size=params.size,
)