Skip to content

Add pagination support to the API #211

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 18, 2023
Merged

Conversation

chouinar
Copy link
Contributor

Ticket

Resolves #210

Changes

This adds pagination support to the API schema and DB queries

Added a new POST /users/search endpoint to have an example of a paginated endpoint.

Context for reviewers

There are likely more features that could be built ontop of this (multi-field sorting, Paginator class as an iterator, and a few other utilities), but was focused on getting the core functionality of pagination working in a fairly general manner.

This approach for pagination is based on a mix of past projects and partially based on the Flask-SQLAlchemy libraries approach.

Testing

Added a bunch of users locally by calling the POST /users endpoint, but only one which would be found by the following query:

{
  "is_active": true,
  "paging": {
    "page_offset": 1,
    "page_size": 25
  },
  "phone_number": "123-456-7890",
  "role_type": "USER",
  "sorting": {
    "order_by": "id",
    "sort_direction": "ascending"
  }
}

And got the following response (with the data removed as it's a lot):

{
  "data": [...],
  "errors": [],
  "message": "Success",
  "pagination_info": {
    "order_by": "id",
    "page_offset": 1,
    "page_size": 25,
    "sort_direction": "ascending",
    "total_pages": 2,
    "total_records": 41
  },
  "status_code": 200,
  "warnings": []
}

Further testing was done, and can be seen in the unit tests to verify the paging/sorting behavior.

@chouinar chouinar requested a review from a team October 16, 2023 19:06
@chouinar chouinar merged commit 670aaa6 into main Oct 18, 2023
@chouinar chouinar deleted the chouinar/pagination-support branch October 18, 2023 20:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add pagination support utilities
3 participants