From c26c5ba9751d65f8b3d33f0b1399c7cdcfcaa6c0 Mon Sep 17 00:00:00 2001 From: fedorHub Date: Tue, 21 Apr 2026 14:07:45 +0200 Subject: [PATCH] fix: multiply node run db issue --- internal/adapters/database.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/adapters/database.go b/internal/adapters/database.go index e56f2a1..d876c46 100644 --- a/internal/adapters/database.go +++ b/internal/adapters/database.go @@ -575,7 +575,7 @@ func (r *SqlRepo) getOrCreateInterface( Identifier: id, } - err := tx.Attrs(interfaceDefaults).FirstOrCreate(&in, id).Error + err := tx.Preload("Addresses").Attrs(interfaceDefaults).FirstOrCreate(&in, id).Error if err != nil { return nil, err } @@ -592,9 +592,13 @@ func (r *SqlRepo) upsertInterface(ui *domain.ContextUserInfo, tx *gorm.DB, in *d return err } - err = tx.Model(in).Association("Addresses").Replace(in.Addresses) - if err != nil { - return fmt.Errorf("failed to update interface addresses: %w", err) + // Only update addresses if they were explicitly set (not nil) + // This prevents accidentally deleting all addresses when loading interface without preload + if in.Addresses != nil { + err = tx.Model(in).Association("Addresses").Replace(in.Addresses) + if err != nil { + return fmt.Errorf("failed to update interface addresses: %w", err) + } } return nil