From d8e58240e7a0403a5946ab4f503532144c0a9f95 Mon Sep 17 00:00:00 2001 From: Tony Tushar Date: Thu, 15 May 2025 16:35:55 -0500 Subject: [PATCH] add salt function --- expr/builtins/hash_and_encode.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/expr/builtins/hash_and_encode.go b/expr/builtins/hash_and_encode.go index 0b6624b..48dc3cb 100644 --- a/expr/builtins/hash_and_encode.go +++ b/expr/builtins/hash_and_encode.go @@ -186,3 +186,22 @@ func encodeB64DecodeEval(ctx expr.EvalContext, args []value.Value) (value.Value, } return value.NewStringValue(string(by)), true } + +// RandomSalt generates a random ten-digit number as a string +// +// random_salt() => "1234567890" +type RandomSalt struct{} + +// Type string +func (m *RandomSalt) Type() value.ValueType { return value.StringType } +func (m *RandomSalt) Validate(n *expr.FuncNode) (expr.EvaluatorFunc, error) { + if len(n.Args) != 0 { + return nil, fmt.Errorf("Expected 0 args for random_salt() but got %s", n) + } + return randomSaltEval, nil +} +func randomSaltEval(ctx expr.EvalContext, args []value.Value) (value.Value, bool) { + // Generate a random number between 1000000000 and 9999999999 + randomNum := rand.Int63n(9000000000) + 1000000000 + return value.NewStringValue(fmt.Sprintf("%d", randomNum)), true +}