From 402f755497b9728de744efb8db4586320749b60a Mon Sep 17 00:00:00 2001
From: henne <accounts@hfellerhoff.de>
Date: Sat, 8 Mar 2025 20:30:12 +0100
Subject: [PATCH] fix: delete associations first when deleting token or machine

---
 main.go | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/main.go b/main.go
index dc51ee2..af38165 100644
--- a/main.go
+++ b/main.go
@@ -121,14 +121,26 @@ func editMachine(c *gin.Context) {
 	c.Redirect(http.StatusFound, "/machines")
 }
 func deleteMachine(c *gin.Context) {
-	if err := db.DB.Where("id = ?", c.Param("id")).Delete(db.Machine{}).Error; err != nil {
+	var machine db.Machine
+	if err := db.DB.Where("id = ?", c.Param("id")).First(&machine).Error; err != nil {
+		returnInternalError(c, err)
+		return
+	}
+	db.DB.Model(&machine).Association("Tokens").Clear()
+	if err := db.DB.Delete(machine).Error; err != nil {
 		returnInternalError(c, err)
 		return
 	}
 	c.Redirect(http.StatusFound, "/machines")
 }
 func deleteToken(c *gin.Context) {
-	if err := db.DB.Where("id = ?", c.Param("id")).Delete(db.Token{}).Error; err != nil {
+	var token db.Token
+	if err := db.DB.Where("id = ?", c.Param("id")).First(&token).Error; err != nil {
+		returnInternalError(c, err)
+		return
+	}
+	db.DB.Model(&token).Association("Machines").Clear()
+	if err := db.DB.Delete(token).Error; err != nil {
 		returnInternalError(c, err)
 		return
 	}