diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c273c1..82223a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,6 @@ on: - master - dev paths-ignore: - - "**/.github/**" - "**/.gitignore" - "**/.vscode/**" - "**/README.md" @@ -46,8 +45,8 @@ jobs: - run: python test.py tag_and_publish: - if: github.ref == 'refs/heads/master' runs-on: ubuntu-latest + if: github.head_ref == 'master' || github.head_ref == 'dev' needs: test permissions: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing @@ -57,7 +56,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-tags: true - ref: ${{ github.ref }} + ref: ${{ github.head_ref }} fetch-depth: 0 - name: setup git @@ -65,18 +64,30 @@ jobs: git config --local user.email "15138480+creyD@users.noreply.github.com" git config --local user.name "creyD" + - name: set version format + id: version_format + run: | + if [[ ${{ github.head_ref }} == 'master' ]]; then + echo "version_format=\${major}.\${minor}.\${patch}" >> $GITHUB_OUTPUT + else + echo "version_format=\${major}.\${minor}.\${patch}rc\${increment}" >> $GITHUB_OUTPUT + fi + - name: Git Version - uses: codacy/git-version@2.8.0 + uses: PaulHatch/semantic-version@v5.4.0 id: git_version with: - minor-identifier: "feat:" - major-identifier: "breaking:" + tag_prefix: "" + major_pattern: "breaking:" + minor_pattern: "feat:" + enable_prerelease_mode: false + version_format: ${{ steps.version_format.outputs.version_format }} - - name: Create Tag - run: git tag ${{ steps.git_version.outputs.version }} - - - name: Push tag - run: git push origin ${{ steps.git_version.outputs.version }} + - name: Create & Push Tag + if: github.head_ref == 'master' || github.head_ref == 'dev' + run: | + git tag ${{ steps.git_version.outputs.version }} + git push origin ${{ steps.git_version.outputs.version }} - name: Set up Python uses: actions/setup-python@v5 diff --git a/CHANGELOG.md b/CHANGELOG.md index 645831d..5b998b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ All notable changes to this project will be documented in this file. +## 2.0.0 + +- Fixed #1 Rename misspelled additonal_data to additional_data on create_obj_from_data +- Fixed #3 Inverse partial flag: bool = False because it was wrong on update_obj_from_data + +Notes: + +You will need to change calls to `create_obj_from_data` according to #1 (rename additonal_data to additional_data) + +You will need to change calls to `update_obj_from_data` according to #3 (if you supplied `partial`, you will need to reverse it: `true` -> `false` and `false` -> `true`) + +## 1.3.0 + +- Addition of pagination proxy and pagination=off functionality (Thanks to @vikbhas) + +## 1.2.5 + +- Bumped dependencies + ## 1.2.4 - Enabled newer versions for all dependencies diff --git a/creyPY/fastapi/crud.py b/creyPY/fastapi/crud.py index 73844cb..2a68978 100644 --- a/creyPY/fastapi/crud.py +++ b/creyPY/fastapi/crud.py @@ -23,9 +23,9 @@ def get_object_or_404( # TODO: Add testing def create_obj_from_data( - data: BaseModel, model: Type[T], db: Session, additonal_data={}, exclude={} + data: BaseModel, model: Type[T], db: Session, additional_data={}, exclude={} ) -> T: - obj = model(**data.model_dump(exclude=exclude) | additonal_data) + obj = model(**data.model_dump(exclude=exclude) | additional_data) db.add(obj) db.commit() db.refresh(obj) @@ -38,13 +38,13 @@ def update_obj_from_data( model: Type[T], id: UUID | str, db: Session, - partial: bool = False, # TODO: inverse, because it is currently the wrong way around + partial: bool = True, ignore_fields=[], additional_data={}, exclude={}, ) -> T: obj = get_object_or_404(model, id, db) - data_dict = data.model_dump(exclude_unset=not partial, exclude=exclude) + data_dict = data.model_dump(exclude_unset=partial, exclude=exclude) data_dict.update(additional_data) # merge additional_data into data_dict for field in data_dict: if field not in ignore_fields: diff --git a/creyPY/fastapi/pagination.py b/creyPY/fastapi/pagination.py index ad339ab..2973e23 100644 --- a/creyPY/fastapi/pagination.py +++ b/creyPY/fastapi/pagination.py @@ -102,13 +102,12 @@ def paginate( transformer: Optional[SyncItemsTransformer] = None, additional_data: Optional[AdditionalData] = None, ): - - params, raw_params = verify_params(params, "limit-offset", "cursor") + params, _ = verify_params(params, "limit-offset", "cursor") count_query = create_count_query(query) total = connection.scalar(count_query) - if paginationFlag is False: + if paginationFlag is False and total > 0: params = Params(page=1, size=total) query = create_paginate_query(query, params)