Skip to content

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

4 participants