Merge pull request #21 from mikkelu/feature/advanced-queries Feature: Advanced queries
Merge pull request #21 from mikkelu/feature/advanced-queries
Feature: Advanced queries
Pagination is based off of the Fluent 2 pagination system.
Add this to your Package.swift file
.package(url: "https://github.com/vapor-community/pagination.git", from: "1.0.0")
Conform your model to Paginatable
Paginatable
extension MyModel: Paginatable { }
Once you have done that, it’s as simple as returning your query in paginated format.
func test(_ req: Request) throws -> Future<Paginated<MyModel>> { return try MyModel.query(on: req).paginate(for: req) }
Even return items off of the query builder
func test(_ req: Request) throws -> Future<Paginated<MyModel>> { return try MyModel.query(on: req).filter(\MyModel.name == "Test").paginate(for: req) }
Making a request with the parameters is easy is appending ?page= and/or ?per=
?page=
?per=
curl "http://localhost:8080/api/v1/models?page=1&per=10"
A response looks like this
{ "data": [{ "updatedAt": "2018-03-07T00:00:00Z", "createdAt": "2018-03-07T00:00:00Z", "name": "My Test Model" }], "page": { "position": { "current": 1, "max": 1 }, "data": { "per": 10, "total": 2 } } }
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
Vapor Pagination
Pagination is based off of the Fluent 2 pagination system.
Getting Started
Add this to your Package.swift file
Conform your model to
Paginatable
Once you have done that, it’s as simple as returning your query in paginated format.
Even return items off of the query builder
Making a request with the parameters is easy is appending
?page=
and/or?per=
A response looks like this