aboutsummaryrefslogtreecommitdiffstats
path: root/internal/thing/helper.go
diff options
context:
space:
mode:
authorLibravatar Mo Tarbin <mhed.t91@gmail.com>2024-06-30 21:41:41 -0400
committerLibravatar Mo Tarbin <mhed.t91@gmail.com>2024-06-30 21:41:41 -0400
commitc13dd9addbf89f716e4ef5cfdf1d673139ffcb68 (patch)
treebc09646ce1d6d3a402abb4694e19da51b57204f6 /internal/thing/helper.go
downloaddonetick-c13dd9addbf89f716e4ef5cfdf1d673139ffcb68.tar.gz
donetick-c13dd9addbf89f716e4ef5cfdf1d673139ffcb68.tar.bz2
donetick-c13dd9addbf89f716e4ef5cfdf1d673139ffcb68.zip
Move to Donetick Org, first commit
Diffstat (limited to '')
-rw-r--r--internal/thing/helper.go57
1 files changed, 57 insertions, 0 deletions
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
+ }
+
+}