From c13dd9addbf89f716e4ef5cfdf1d673139ffcb68 Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Sun, 30 Jun 2024 21:41:41 -0400 Subject: Move to Donetick Org, first commit --- internal/thing/helper.go | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 internal/thing/helper.go (limited to 'internal/thing/helper.go') diff --git a/internal/thing/helper.go b/internal/thing/helper.go new file mode 100644 index 0000000..c3941ee --- /dev/null +++ b/internal/thing/helper.go @@ -0,0 +1,57 @@ +package thing + +import ( + "strconv" + + tModel "donetick.com/core/internal/thing/model" +) + +func isValidThingState(thing *tModel.Thing) bool { + switch thing.Type { + case "number": + _, err := strconv.Atoi(thing.State) + return err == nil + case "text": + return true + case "boolean": + return thing.State == "true" || thing.State == "false" + default: + return false + } +} + +func EvaluateThingChore(tchore *tModel.ThingChore, newState string) bool { + if tchore.Condition == "" { + return newState == tchore.TriggerState + } + + switch tchore.Condition { + case "eq": + return newState == tchore.TriggerState + case "neq": + return newState != tchore.TriggerState + } + + newStateInt, err := strconv.Atoi(newState) + if err != nil { + return false + } + TargetStateInt, err := strconv.Atoi(tchore.TriggerState) + if err != nil { + return false + } + + switch tchore.Condition { + case "gt": + return newStateInt > TargetStateInt + case "lt": + return newStateInt < TargetStateInt + case "gte": + return newStateInt >= TargetStateInt + case "lte": + return newStateInt <= TargetStateInt + default: + return newState == tchore.TriggerState + } + +} -- cgit