22 lines
723 B
Go
22 lines
723 B
Go
package data
|
|
|
|
import "greenlight.craftr.fr/internal/validator"
|
|
|
|
type Filters struct {
|
|
Page int
|
|
PageSize int
|
|
Sort string
|
|
SortSafelist []string
|
|
}
|
|
|
|
func ValidateFilters(v *validator.Validator, f Filters) {
|
|
// Check that the page and page_size parameters contain sensible values
|
|
v.Check(f.Page > 0, "page", "must be greater than 0")
|
|
v.Check(f.Page <= 10_000_000, "page", "must be a maximum of 10 million")
|
|
v.Check(f.PageSize > 0, "page_size", "must be greater than 0")
|
|
v.Check(f.PageSize <= 100, "page_size", "must be a maximum of 100")
|
|
|
|
// Check that the sort parameter matches a value in the safelist
|
|
v.Check(validator.PermittedValue(f.Sort, f.SortSafelist...), "sort", "invalid sort value")
|
|
}
|