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 } } }
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
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
PaginatableOnce 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