From 2ad6fd9a9922a1107dd2fd5a2c4e1f00c7910920 Mon Sep 17 00:00:00 2001
From: Jonas Leder <jonas@jonasled.de>
Date: Mon, 24 Mar 2025 20:50:49 +0100
Subject: [PATCH] add columns for alarm plugin and plugin config id

---
 database/tables/smokeDetector.go    |  2 ++
 docs/docs.go                        | 12 ++++++++++++
 docs/swagger.json                   | 12 ++++++++++++
 docs/swagger.yaml                   |  8 ++++++++
 types/updateSmokeDetectorRequest.go |  4 +++-
 webserver/smokeDetectors/update.go  |  7 +++++++
 6 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/database/tables/smokeDetector.go b/database/tables/smokeDetector.go
index e0b0460..45de964 100644
--- a/database/tables/smokeDetector.go
+++ b/database/tables/smokeDetector.go
@@ -11,4 +11,6 @@ type SmokeDetector struct {
 	ZigBeeName string `gorm:"unique"`
 	Name       string
 	Battery    int
+	AlarmPlugin string
+	AlarmPluginConfigId uint
 }
diff --git a/docs/docs.go b/docs/docs.go
index bd12248..d956009 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -291,6 +291,12 @@ const docTemplate = `{
         "tables.SmokeDetector": {
             "type": "object",
             "properties": {
+                "alarmPlugin": {
+                    "type": "string"
+                },
+                "alarmPluginConfigId": {
+                    "type": "integer"
+                },
                 "battery": {
                     "type": "integer"
                 },
@@ -344,6 +350,12 @@ const docTemplate = `{
         "types.UpdateSmokeDetectorRequest": {
             "type": "object",
             "properties": {
+                "alarmPlugin": {
+                    "type": "string"
+                },
+                "alarmPluginConfigId": {
+                    "type": "integer"
+                },
                 "name": {
                     "type": "string"
                 }
diff --git a/docs/swagger.json b/docs/swagger.json
index 266c475..939cf75 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -282,6 +282,12 @@
         "tables.SmokeDetector": {
             "type": "object",
             "properties": {
+                "alarmPlugin": {
+                    "type": "string"
+                },
+                "alarmPluginConfigId": {
+                    "type": "integer"
+                },
                 "battery": {
                     "type": "integer"
                 },
@@ -335,6 +341,12 @@
         "types.UpdateSmokeDetectorRequest": {
             "type": "object",
             "properties": {
+                "alarmPlugin": {
+                    "type": "string"
+                },
+                "alarmPluginConfigId": {
+                    "type": "integer"
+                },
                 "name": {
                     "type": "string"
                 }
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index f2141cd..adc51df 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -1,6 +1,10 @@
 definitions:
   tables.SmokeDetector:
     properties:
+      alarmPlugin:
+        type: string
+      alarmPluginConfigId:
+        type: integer
       battery:
         type: integer
       createdAt:
@@ -35,6 +39,10 @@ definitions:
     type: object
   types.UpdateSmokeDetectorRequest:
     properties:
+      alarmPlugin:
+        type: string
+      alarmPluginConfigId:
+        type: integer
       name:
         type: string
     type: object
diff --git a/types/updateSmokeDetectorRequest.go b/types/updateSmokeDetectorRequest.go
index c7c96e4..286ce16 100644
--- a/types/updateSmokeDetectorRequest.go
+++ b/types/updateSmokeDetectorRequest.go
@@ -1,5 +1,7 @@
 package types
 
 type UpdateSmokeDetectorRequest struct {
-	Name string `json:"name"`
+	Name                string `json:"name"`
+	AlarmPlugin         string `json:"alarmPlugin"`
+	AlarmPluginConfigId uint   `json:"alarmPluginConfigId"`
 }
diff --git a/webserver/smokeDetectors/update.go b/webserver/smokeDetectors/update.go
index 4a529dc..ad695da 100644
--- a/webserver/smokeDetectors/update.go
+++ b/webserver/smokeDetectors/update.go
@@ -53,6 +53,13 @@ func update(ctx *gin.Context) {
 	if requestBody.Name != "" {
 		smokeDetectors.Name = requestBody.Name
 	}
+	if requestBody.AlarmPlugin != "" {
+		smokeDetectors.AlarmPlugin = requestBody.AlarmPlugin
+	}
+	if requestBody.AlarmPluginConfigId != 0 {
+		smokeDetectors.AlarmPluginConfigId = requestBody.AlarmPluginConfigId
+	}
+
 	database.Db.Save(&smokeDetectors)
 
 	ctx.JSON(http.StatusOK, &smokeDetectors)
-- 
GitLab