Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package sorter | |
import ( | |
"github.com/pkg/errors" | |
"github.com/weaviate/weaviate/entities/filters" | |
) | |
func extractPropNamesAndOrders(sort []filters.Sort) ([]string, []string, error) { | |
propNames := make([]string, len(sort)) | |
orders := make([]string, len(sort)) | |
for i, srt := range sort { | |
if len(srt.Path) == 0 { | |
return nil, nil, errors.New("path parameter cannot be empty") | |
} | |
if len(srt.Path) > 1 { | |
return nil, nil, errors.New("sorting by reference not supported, path must have exactly one argument") | |
} | |
propNames[i] = srt.Path[0] | |
orders[i] = srt.Order | |
} | |
return propNames, orders, nil | |
} | |
func validateLimit(limit, elementsCount int) int { | |
if limit > elementsCount { | |
return elementsCount | |
} | |
if limit < 0 { | |
return 0 | |
} | |
return limit | |
} | |