Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrDecisionDenied = errors.New("trigger: evaluation = false") ErrEmptyExpressions = errors.New("trigger: empty expressions") )
View Source
var Functions = FuncMap{ "now": { // contains filtered or unexported fields }, "uuid": { // contains filtered or unexported fields }, "sha1": { // contains filtered or unexported fields }, "sha256": { // contains filtered or unexported fields }, "sha3": { // contains filtered or unexported fields }, "base64Encode": { // contains filtered or unexported fields }, "base64Decode": { // contains filtered or unexported fields }, "jsonEncode": { // contains filtered or unexported fields }, "jsonDecode": { // contains filtered or unexported fields }, "includes": { // contains filtered or unexported fields }, "replace": { // contains filtered or unexported fields }, "join": { // contains filtered or unexported fields }, "titleCase": { // contains filtered or unexported fields }, "lowerCase": { // contains filtered or unexported fields }, "upperCase": { // contains filtered or unexported fields }, "trimSpace": { // contains filtered or unexported fields }, "trimPrefix": { // contains filtered or unexported fields }, "trimSuffix": { // contains filtered or unexported fields }, "split": { // contains filtered or unexported fields }, "geoDistance": { // contains filtered or unexported fields }, "render": { // contains filtered or unexported fields }, }
Functions ¶
This section is empty.
Types ¶
type Decision ¶
type Decision struct {
// contains filtered or unexported fields
}
Decision is used to evaluate boolean expressions
func NewDecision ¶
NewDecision creates a new Decision with the given boolean CEL expressions
Example ¶
package main
import (
"fmt"
"github.com/graphikDB/trigger"
)
func main() {
decision, err := trigger.NewDecision("this.email.endsWith('acme.com')")
if err != nil {
fmt.Println(err.Error())
return
}
if err := decision.Eval(map[string]interface{}{
"name": "bob",
"email": "bob@acme.com",
}); err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(decision.Expression())
}
Output: this.email.endsWith('acme.com')
func (*Decision) Expression ¶
Expressions returns the decsions raw expression
type Trigger ¶
type Trigger struct {
// contains filtered or unexported fields
}
Trigger creates values as map[string]interface{} if it's decisider returns no errors against a Mapper
func NewTrigger ¶
NewTrigger creates a new trigger instance from the decision & trigger expressions
Example ¶
package main
import (
"fmt"
"github.com/graphikDB/trigger"
)
func main() {
decision, err := trigger.NewDecision("this.email.endsWith('acme.com')")
if err != nil {
fmt.Println(err.Error())
return
}
trigg, err := trigger.NewTrigger(decision, `
{
'admin': true,
'updated_at': now(),
'email_sha1': sha1("this.email"),
'email_sha3': sha3("this.email"),
'email_sha256': sha256("this.email")
}
`)
if err != nil {
fmt.Println(err.Error())
return
}
person := map[string]interface{}{
"name": "bob",
"email": "bob@acme.com",
}
data, err := trigg.Trigger(person)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(data["admin"], data["updated_at"].(int64) > 0, data["email_sha1"], data["email_sha3"], data["email_sha256"])
}
Output: true true bbd5d1877fc1db4e1dc12fbd39dd0989cf422be5 1ec04699856dcbef0f32413a71b6c8a1228de6663f46159f0084b0ecbccb7a8ca3e7928028650ad318f2d52e2ed5b9edecfc46c088557e5fa640f94c3fec8c46 2fee51920dc7672e5c66b328a4b4fff0382c4552f893f7a92747a213085855dd
func (*Trigger) Expression ¶
Expression returns the triggers raw CEL expressions
Click to show internal directories.
Click to hide internal directories.