From c8c597797858204e1cc167c472a2f9157d0a1849 Mon Sep 17 00:00:00 2001 From: Conrad Date: Tue, 29 Oct 2024 16:20:01 +0100 Subject: [PATCH 1/3] fix: removed non-working backsync --- .github/workflows/ci.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f64c962..f44b72b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,15 +87,6 @@ jobs: git tag ${{ steps.git_version.outputs.version }} git push origin ${{ steps.git_version.outputs.version }} - - name: Sync tag to dev branch - if: github.ref == 'master' - run: | - git fetch origin dev - git checkout dev - git merge --no-ff ${{ steps.git_version.outputs.version }} - git push origin dev - git checkout master - - name: Set up Python uses: actions/setup-python@v5 with: From 89997372ef896bc49246310db4ceacf260916551 Mon Sep 17 00:00:00 2001 From: vikynoah Date: Tue, 5 Nov 2024 11:29:06 +0100 Subject: [PATCH 2/3] fix: Changes to accomodate pagination flag in Params (#14) Co-authored-by: vikbhas --- creyPY/fastapi/pagination.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/creyPY/fastapi/pagination.py b/creyPY/fastapi/pagination.py index 2973e23..98513ff 100644 --- a/creyPY/fastapi/pagination.py +++ b/creyPY/fastapi/pagination.py @@ -1,6 +1,6 @@ from math import ceil from typing import Any, Generic, Optional, Self, Sequence, TypeVar, Union - +from pydantic import BaseModel from fastapi_pagination import Params from fastapi_pagination.bases import AbstractPage, AbstractParams from fastapi_pagination.types import ( @@ -12,13 +12,29 @@ from fastapi_pagination.types import ( from fastapi_pagination.api import create_page, apply_items_transformer from fastapi_pagination.utils import verify_params from fastapi_pagination.ext.sqlalchemy import create_paginate_query +from fastapi_pagination.bases import AbstractParams, RawParams from pydantic.json_schema import SkipJsonSchema from sqlalchemy.sql.selectable import Select from sqlalchemy.orm.session import Session from sqlalchemy import select, func +from fastapi import Query T = TypeVar("T") +class PaginationParams(BaseModel, AbstractParams): + page: int = Query(1, ge=1, description="Page number") + size: int = Query(50, ge=1, le=100, description="Page size") + pagination: bool = Query(True, description="Toggle pagination") + + def to_raw_params(self) -> RawParams: + if not self.pagination: + return RawParams(limit=None, offset=None) + + return RawParams( + limit=self.size, + offset=(self.page - 1) * self.size + ) + # TODO: Add complete fastapi-pagination proxy here # TODO: Add pagination off functionality @@ -32,7 +48,7 @@ class Page(AbstractPage[T], Generic[T]): has_next: bool | SkipJsonSchema[None] = None has_prev: bool | SkipJsonSchema[None] = None - __params_type__ = Params + __params_type__ = PaginationParams @classmethod def create( @@ -97,18 +113,19 @@ def unwrap_scalars( def paginate( connection: Session, query: Select, - paginationFlag: bool = True, params: Optional[AbstractParams] = None, transformer: Optional[SyncItemsTransformer] = None, additional_data: Optional[AdditionalData] = None, ): - params, _ = verify_params(params, "limit-offset", "cursor") + params, raw_params = verify_params(params, "limit-offset", "cursor") count_query = create_count_query(query) total = connection.scalar(count_query) - if paginationFlag is False and total > 0: + if params.pagination is False and total > 0: params = Params(page=1, size=total) + else: + params = Params(page=params.page, size=params.size) query = create_paginate_query(query, params) items = connection.execute(query).all() From dce897c2471c1f1eec3a9cea48b704380c5c990d Mon Sep 17 00:00:00 2001 From: creyD Date: Tue, 5 Nov 2024 10:29:40 +0000 Subject: [PATCH 3/3] Adjusted files for isort & autopep --- creyPY/fastapi/pagination.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/creyPY/fastapi/pagination.py b/creyPY/fastapi/pagination.py index 98513ff..f96f698 100644 --- a/creyPY/fastapi/pagination.py +++ b/creyPY/fastapi/pagination.py @@ -21,6 +21,7 @@ from fastapi import Query T = TypeVar("T") + class PaginationParams(BaseModel, AbstractParams): page: int = Query(1, ge=1, description="Page number") size: int = Query(50, ge=1, le=100, description="Page size") @@ -28,13 +29,10 @@ class PaginationParams(BaseModel, AbstractParams): def to_raw_params(self) -> RawParams: if not self.pagination: - return RawParams(limit=None, offset=None) - - return RawParams( - limit=self.size, - offset=(self.page - 1) * self.size - ) - + return RawParams(limit=None, offset=None) + + return RawParams(limit=self.size, offset=(self.page - 1) * self.size) + # TODO: Add complete fastapi-pagination proxy here # TODO: Add pagination off functionality