Newer
Older
package messageworker
import (
"jonasled.dev/jonasled/ems-esp-logger/database"
"jonasled.dev/jonasled/ems-esp-logger/database/tables"
"jonasled.dev/jonasled/ems-esp-logger/helper"
"jonasled.dev/jonasled/ems-esp-logger/log"
"jonasled.dev/jonasled/ems-esp-logger/types"
taskData, err := queue.MainQueue.Dequeue()
if err != nil {
time.Sleep(time.Second)
continue
}
log.Log.Debug("Received new task: ", taskData)
var task types.Task
if err != nil {
log.Log.Error("Failed decoding task as JSON: ", err.Error())
continue
}
var instance tables.Instance
err = database.Db.Where("name = ?", task.Instance).First(&instance).Error
if err != nil {
log.Log.Error("Failed retreiving instance from database, pushing task back to queue: ", err.Error())
queue.MainQueue.Enqueue(taskData, 60)
continue
}
var jsonData map[string]interface{}
err = json.Unmarshal([]byte(task.Data), &jsonData)
if err != nil {
log.Log.Error("Failed decoding boiler JSON: ", err.Error())
queue.MainQueue.Enqueue(taskData, 60)
continue
}
for key, value := range jsonData {
valueType := database.GetOrCreateValueType(key)
dbValue := tables.Value{
Date: task.Date,
ValueType: valueType,
Value: helper.AnyToString(value),
Instance: instance,
}
database.Db.Create(&dbValue)
}
log.Log.Info("Stored boiler data in database")