Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vapor-community/pagination
Simple Vapor 3 Pagination
https://github.com/vapor-community/pagination
fluent swift-4 vapor vapor-3
Last synced: 5 days ago
JSON representation
Simple Vapor 3 Pagination
- Host: GitHub
- URL: https://github.com/vapor-community/pagination
- Owner: vapor-community
- License: mit
- Created: 2018-04-06T19:53:29.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-02-25T18:53:12.000Z (almost 6 years ago)
- Last Synced: 2025-02-02T15:35:39.239Z (19 days ago)
- Topics: fluent, swift-4, vapor, vapor-3
- Language: Swift
- Homepage:
- Size: 50.8 KB
- Stars: 65
- Watchers: 9
- Forks: 15
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README


[](https://circleci.com/gh/vapor-community/pagination)# Vapor Pagination
Pagination is based off of the Fluent 2 pagination system.
## Getting Started
Add this to your Package.swift file
```swift
.package(url: "https://github.com/vapor-community/pagination.git", from: "1.0.0")
```Conform your model to `Paginatable`
```swift
extension MyModel: Paginatable { }
```Once you have done that, it's as simple as returning your query in paginated format.
```swift
func test(_ req: Request) throws -> Future> {
return try MyModel.query(on: req).paginate(for: req)
}
```
Even return items off of the query builder
```swift
func test(_ req: Request) throws -> Future> {
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=`
```curl
curl "http://localhost:8080/api/v1/models?page=1&per=10"
```A response looks like this
```json
{
"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
}
}
}
```