Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func paginatedQuery(query *orm.Query, pagination *person.PaginationRequest, allowedFields ...string) (*orm.Query, error) {
- query.Offset(int(pagination.Offset))
- query.Limit(int(pagination.Limit))
- if pagination.SortBy != "" {
- flag := false
- for i := range allowedFields {
- if pagination.SortBy == allowedFields[i] {
- flag = true
- break
- }
- }
- if !flag {
- return nil, status.Error(codes.InvalidArgument, "invalid sort_by field (permitted value ["+
- strings.Join(allowedFields, ",")+"])")
- }
- if pagination.Order != "" {
- if pagination.Order != "desc" && pagination.Order != "asc" {
- return nil, status.Error(codes.InvalidArgument, "invalid order value (permitted value [desc,asc])")
- }
- query.Order(pagination.SortBy + " " + pagination.Order)
- } else {
- query.Order(pagination.SortBy)
- }
- } else {
- if pagination.Order != "" {
- return nil, status.Error(codes.InvalidArgument, "invalid order value (sort_by field not set)")
- }
- }
- return query, nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement