MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / CompileFunctions

Function CompileFunctions

db/functions/function.go:72–91  ·  view source on GitHub ↗

Compiles the functions in a UserFunctionConfigMap, returning UserFunctions.

(ctx context.Context, config FunctionsConfig)

Source from the content-addressed store, hash-verified

70
71// Compiles the functions in a UserFunctionConfigMap, returning UserFunctions.
72func CompileFunctions(ctx context.Context, config FunctionsConfig) (*db.UserFunctions, error) {
73 if config.MaxFunctionCount != nil && len(config.Definitions) > *config.MaxFunctionCount {
74 return nil, fmt.Errorf("too many functions declared (> %d)", *config.MaxFunctionCount)
75 }
76 fns := db.UserFunctions{
77 MaxRequestSize: config.MaxRequestSize,
78 Definitions: map[string]db.UserFunction{},
79 }
80 var multiError *base.MultiError
81 for name, fnConfig := range config.Definitions {
82 if config.MaxCodeSize != nil && len(fnConfig.Code) > *config.MaxCodeSize {
83 multiError = multiError.Append(fmt.Errorf("function code too large (> %d bytes)", *config.MaxCodeSize))
84 } else if userFn, err := compileFunction(ctx, name, "function", fnConfig); err == nil {
85 fns.Definitions[name] = userFn
86 } else {
87 multiError = multiError.Append(err)
88 }
89 }
90 return &fns, multiError.ErrorOrNil()
91}
92
93// Validates a FunctionsConfig.
94func ValidateFunctions(ctx context.Context, config FunctionsConfig) error {

Callers 7

dbcOptionsFromConfigFunction · 0.92
ValidateFunctionsFunction · 0.85
setupTestDBWithFunctionsFunction · 0.85

Calls 4

AppendMethod · 0.95
ErrorOrNilMethod · 0.95
compileFunctionFunction · 0.85
ErrorfMethod · 0.80