MCPcopy
hub / github.com/pocketbase/pocketbase / BuildExpr

Method BuildExpr

tools/search/sort.go:26–45  ·  view source on GitHub ↗

BuildExpr resolves the sort field into a valid db sort expression.

(fieldResolver FieldResolver)

Source from the content-addressed store, hash-verified

24
25// BuildExpr resolves the sort field into a valid db sort expression.
26func (s *SortField) BuildExpr(fieldResolver FieldResolver) (string, error) {
27 // special case for random sort
28 if s.Name == randomSortKey {
29 return "RANDOM()", nil
30 }
31
32 // special case for the builtin SQLite rowid column
33 if s.Name == rowidSortKey {
34 return fmt.Sprintf("[[_rowid_]] %s", s.Direction), nil
35 }
36
37 result, err := fieldResolver.Resolve(s.Name)
38
39 // invalidate empty fields and non-column identifiers
40 if err != nil || len(result.Params) > 0 || result.Identifier == "" || strings.ToLower(result.Identifier) == "null" {
41 return "", fmt.Errorf("invalid sort field %q", s.Name)
42 }
43
44 return fmt.Sprintf("%s %s", result.Identifier, s.Direction), nil
45}
46
47// ParseSortFromString parses the provided string expression
48// into a slice of SortFields.

Callers 15

ExecMethod · 0.45
TestSortFieldBuildExprFunction · 0.45
TestFilterDataBuildExprFunction · 0.45
TestLikeParamsWrappingFunction · 0.45
FindRecordsByFilterMethod · 0.45
CanAccessRecordMethod · 0.45
checkRuleMethod · 0.45
logsStatsFunction · 0.45

Calls 1

ResolveMethod · 0.65

Tested by 5

TestSortFieldBuildExprFunction · 0.36
TestFilterDataBuildExprFunction · 0.36
TestLikeParamsWrappingFunction · 0.36