Kyoo/auth/page.go
2025-04-04 22:44:44 +02:00

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,
}
}