mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
29 lines
629 B
Go
29 lines
629 B
Go
package main
|
|
|
|
import "net/url"
|
|
|
|
type Page[T any] struct {
|
|
Items []T `json:"items"`
|
|
This string `json:"this" example:"https://kyoo.zoriya.dev/auth/users"`
|
|
Next *string `json:"next" example:"https://kyoo.zoriya.dev/auth/users?after=aoeusth"`
|
|
}
|
|
|
|
func NewPage(items []User, url *url.URL, limit int32) Page[User] {
|
|
this := url.String()
|
|
|
|
var next *string
|
|
if len(items) == int(limit) && limit > 0 {
|
|
query := url.Query()
|
|
query.Set("after", items[len(items)-1].Id.String())
|
|
url.RawQuery = query.Encode()
|
|
nextU := url.String()
|
|
next = &nextU
|
|
}
|
|
|
|
return Page[User]{
|
|
Items: items,
|
|
This: this,
|
|
Next: next,
|
|
}
|
|
}
|