From 98094abf3efb24451c50c5d9df4d944fc340cb5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Z=C3=BCrcher?= Date: Fri, 7 Nov 2025 08:17:48 +0100 Subject: [PATCH] fix delete function --- dbHandler.go | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/dbHandler.go b/dbHandler.go index e2e148d..2527608 100644 --- a/dbHandler.go +++ b/dbHandler.go @@ -218,42 +218,22 @@ func (dH *DBHandler) UpdateValuesByKey(model any, key string, value any) error { return dH.db.Model(lookUpModel).Updates(model).Error } -// deleteById -// -// Description: -// -// Deletes records by their ID(s). -// -// Behavior: -// - If the first ID == 0, all records in the table are deleted. -// - Otherwise, deletes the provided IDs. -// -// Parameters: -// - model: Model struct type representing the table. -// - id: Variadic list of IDs to delete. -// -// Returns: -// - error: Any deletion error. func (dH *DBHandler) DeleteById(model any, ids ...uint) error { if len(ids) == 0 { return fmt.Errorf("no IDs provided") } - if ids[0] == 0 { - dH.logger.Debug("deleteById", "delete all") - return dH.db.Where("1 = 1").Delete(model).Error + if len(ids) == 1 && ids[0] == 0 { + dH.logger.Debug("deleteById", "delete ALL records!") + return dH.db.Session(&gorm.Session{AllowGlobalUpdate: true}). + Delete(model).Error } dH.logger.Debug("deleteById", "delete ids "+fmt.Sprint(ids)) - if !dH.Exists(model, "id", ids, false) { - return errors.New("no matching id(s) found") - } - // Always use Model() to avoid GORM’s “limit 1” safeguard - if err := dH.db.Model(model).Where("id IN ?", ids).Delete(nil).Error; err != nil { + if err := dH.db.Delete(model, ids).Error; err != nil { return fmt.Errorf("delete failed: %w", err) } - return nil }