MCPcopy
hub / github.com/pocketbase/pocketbase / resolveToken

Function resolveToken

tools/search/filter.go:261–320  ·  view source on GitHub ↗
(token fexpr.Token, fieldResolver FieldResolver)

Source from the content-addressed store, hash-verified

259}
260
261func resolveToken(token fexpr.Token, fieldResolver FieldResolver) (*ResolverResult, error) {
262 switch token.Type {
263 case fexpr.TokenIdentifier:
264 // check for macros
265 // ---
266 if macroFunc, ok := identifierMacros[token.Literal]; ok {
267 placeholder := "t" + security.PseudorandomString(8)
268
269 macroValue, err := macroFunc()
270 if err != nil {
271 return nil, err
272 }
273
274 return &ResolverResult{
275 Identifier: "{:" + placeholder + "}",
276 Params: dbx.Params{placeholder: macroValue},
277 }, nil
278 }
279
280 // custom resolver
281 // ---
282 result, err := fieldResolver.Resolve(token.Literal)
283 if err != nil || result.Identifier == "" {
284 for k, v := range normalizedIdentifiers {
285 if strings.EqualFold(k, token.Literal) {
286 return &ResolverResult{Identifier: v}, nil
287 }
288 }
289 return nil, err
290 }
291
292 return result, err
293 case fexpr.TokenText:
294 placeholder := "t" + security.PseudorandomString(8)
295
296 return &ResolverResult{
297 Identifier: "{:" + placeholder + "}",
298 Params: dbx.Params{placeholder: token.Literal},
299 }, nil
300 case fexpr.TokenNumber:
301 placeholder := "t" + security.PseudorandomString(8)
302
303 return &ResolverResult{
304 Identifier: "{:" + placeholder + "}",
305 Params: dbx.Params{placeholder: cast.ToFloat64(token.Literal)},
306 }, nil
307 case fexpr.TokenFunction:
308 fn, ok := TokenFunctions[token.Literal]
309 if !ok {
310 return nil, fmt.Errorf("unknown function %q", token.Literal)
311 }
312
313 args, _ := token.Meta.([]fexpr.Token)
314 return fn(func(argToken fexpr.Token) (*ResolverResult, error) {
315 return resolveToken(argToken, fieldResolver)
316 }, args...)
317 }
318

Callers 1

resolveTokenizedExprFunction · 0.85

Calls 3

PseudorandomStringFunction · 0.92
ResolveMethod · 0.65
fnFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…