From f3f90042fef456b88d91b5fc80dbaea6f8cc4939 Mon Sep 17 00:00:00 2001
From: Jonas Leder <jonas@jonasled.de>
Date: Sun, 26 Jan 2025 13:46:11 +0100
Subject: [PATCH] introduce struct for transmitting task

---
 mqttclient/main.go | 45 ++++++++++++++++++++++++++++-----------------
 types/task.go      |  9 +++++++++
 2 files changed, 37 insertions(+), 17 deletions(-)
 create mode 100644 types/task.go

diff --git a/mqttclient/main.go b/mqttclient/main.go
index 5f56dfc..ee1c61e 100644
--- a/mqttclient/main.go
+++ b/mqttclient/main.go
@@ -10,6 +10,7 @@ import (
 	"jonasled.dev/jonasled/ems-esp-logger/csv"
 	"jonasled.dev/jonasled/ems-esp-logger/helper"
 	"jonasled.dev/jonasled/ems-esp-logger/log"
+	"jonasled.dev/jonasled/ems-esp-logger/types"
 	"jonasled.dev/jonasled/ems-esp-logger/zeromq"
 )
 
@@ -22,25 +23,20 @@ var messagePubHandlerBoiler mqtt.MessageHandler = func(client mqtt.Client, msg m
 	log.Log.Info("Received new boiler data")
 	csv.JsonToCsv(string(msg.Payload()))
 
-	var jsonData map[string]interface{}
-	err := json.Unmarshal(msg.Payload(), &jsonData)
-	if err != nil {
-		panic(err)
-	}
-
-	currentTime := time.Now().Local().Format("2006-01-02 15:04:05")
-	jsonData["date"] = currentTime
-
-	updatedData, err := json.Marshal(jsonData)
-	if err != nil {
-		panic(err)
-	}
-
 	if os.Getenv("OUTPUT_FILE_NAME_RAW") != "" {
-		dumpRawData(string(updatedData), os.Getenv("OUTPUT_FILE_NAME_RAW"))
+		dumpRawData(string(msg.Payload()), os.Getenv("OUTPUT_FILE_NAME_RAW"))
 	}
 	if os.Getenv("OUTPUT_DATABSE") != "" {
-		zeromq.Pusher.Send(string(updatedData), 0)
+		task := types.Task{
+			Date:     time.Now().UTC(),
+			Data:     string(msg.Payload()),
+			Instance: os.Getenv("INSTANCE_NAME"),
+		}
+		taskData, err := json.Marshal(task)
+		if err != nil {
+			log.Log.Error("Failed encoding new data task as JSON: ", err.Error())
+		}
+		zeromq.Pusher.Send(string(taskData), 0)
 	}
 
 }
@@ -72,12 +68,27 @@ func Init() {
 }
 
 func dumpRawData(data string, filename string) {
+
+	var jsonData map[string]interface{}
+	err := json.Unmarshal([]byte(data), &jsonData)
+	if err != nil {
+		panic(err)
+	}
+
+	currentTime := time.Now().Local().Format("2006-01-02 15:04:05")
+	jsonData["date"] = currentTime
+
+	updatedData, err := json.Marshal(jsonData)
+	if err != nil {
+		panic(err)
+	}
+
 	file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
 	if err != nil {
 		panic(err)
 	}
 	defer file.Close()
 
-	file.WriteString(data)
+	file.WriteString(string(updatedData))
 	file.WriteString("\n")
 }
diff --git a/types/task.go b/types/task.go
new file mode 100644
index 0000000..44e1d04
--- /dev/null
+++ b/types/task.go
@@ -0,0 +1,9 @@
+package types
+
+import "time"
+
+type Task struct {
+	Date     time.Time
+	Instance string
+	Data     string
+}
-- 
GitLab