From fe4177addddaed799c20b4ae9337ce5c03ab70d4 Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Thu, 13 May 2021 08:52:42 +0300 Subject: [PATCH] Revert "Merge pull request #87 from uriyyo/bugfix/default-page-number" This reverts commit 819fef65fa9712513ebf067f206301911daffe84, reversing changes made to 806f62563c09cacb4499fcc998e7c301523b1c9d. --- fastapi_pagination/default.py | 4 ++-- fastapi_pagination/links/default.py | 8 ++++---- tests/base.py | 4 ++-- tests/test_bases.py | 4 ++-- tests/test_links.py | 18 +++++++++--------- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/fastapi_pagination/default.py b/fastapi_pagination/default.py index 1f5f2081..1d1c53a9 100644 --- a/fastapi_pagination/default.py +++ b/fastapi_pagination/default.py @@ -12,13 +12,13 @@ class Params(BaseModel, AbstractParams): - page: int = Query(1, gt=0, description="Page number") + page: int = Query(0, ge=0, description="Page number") size: int = Query(50, gt=0, le=100, description="Page size") def to_raw_params(self) -> RawParams: return RawParams( limit=self.size, - offset=self.size * (self.page - 1), + offset=self.size * self.page, ) diff --git a/fastapi_pagination/links/default.py b/fastapi_pagination/links/default.py index e70b1e79..2c8e3888 100644 --- a/fastapi_pagination/links/default.py +++ b/fastapi_pagination/links/default.py @@ -20,10 +20,10 @@ def __root_validator__(cls, value: Any) -> Any: page, size, total = [value[k] for k in ("page", "size", "total")] value["links"] = create_links( - first={"page": 1}, - last={"page": ceil(total / size) + 1}, - next={"page": page + 1} if page * size < total else None, - prev={"page": page - 1} if 1 <= page - 1 else None, + first={"page": 0}, + last={"page": ceil(total / size)}, + next={"page": page + 1} if (page + 1) * size < total else None, + prev={"page": page - 1} if 0 <= page - 1 else None, ) return value diff --git a/tests/base.py b/tests/base.py index b5a3be69..e22fc266 100644 --- a/tests/base.py +++ b/tests/base.py @@ -20,9 +20,9 @@ class Config: _default_params = [ - *[Params(page=i) for i in range(1, 10)], + *[Params(page=i) for i in range(10)], *[Params(size=i) for i in range(1, 100, 10)], - *[Params(page=i, size=j) for i in range(1, 10) for j in range(1, 50, 10)], + *[Params(page=i, size=j) for i in range(10) for j in range(1, 50, 10)], ] _limit_offset_params = [ *[LimitOffsetParams(offset=i) for i in range(10)], diff --git a/tests/test_bases.py b/tests/test_bases.py index 4c7e2081..67bf5dbf 100644 --- a/tests/test_bases.py +++ b/tests/test_bases.py @@ -35,10 +35,10 @@ def test_custom_page_invalid_values(): ) def test_custom_page(cls): page_cls = cls.with_custom_options() - assert page_cls.__params_type__().dict() == {"size": 50, "page": 1} + assert page_cls.__params_type__().dict() == {"size": 50, "page": 0} page_cls = cls.with_custom_options(size=100) - assert page_cls.__params_type__().dict() == {"size": 100, "page": 1} + assert page_cls.__params_type__().dict() == {"size": 100, "page": 0} page_cls = cls.with_custom_options(size=100, page=100) assert page_cls.__params_type__().dict() == {"size": 100, "page": 100} diff --git a/tests/test_links.py b/tests/test_links.py index c41e12a0..c3b454cf 100644 --- a/tests/test_links.py +++ b/tests/test_links.py @@ -24,23 +24,23 @@ async def route(): ( "/default", None, - "/default?page=2", "/default?page=1", - "/default?page=5", + "/default?page=0", + "/default?page=4", ), ( - "/default?page=2", - "/default?page=1", - "/default?page=3", "/default?page=1", - "/default?page=5", + "/default?page=0", + "/default?page=2", + "/default?page=0", + "/default?page=4", ), ( - "/default?page=5", "/default?page=4", + "/default?page=3", None, - "/default?page=1", - "/default?page=5", + "/default?page=0", + "/default?page=4", ), ( "/limit-offset",