From 364edbe2ca6e19f8073dade60a9197f46b6d371b Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Mon, 10 Feb 2025 11:18:32 +0800 Subject: [PATCH] fix: fix the issue of abnormal display of backup account size (#7833) --- agent/app/repo/backup.go | 28 +++++++++++++++---- agent/init/migration/migrations/init.go | 2 +- .../views/setting/backup-account/index.vue | 2 +- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/agent/app/repo/backup.go b/agent/app/repo/backup.go index 37cd8d18d..cd8538ea3 100644 --- a/agent/app/repo/backup.go +++ b/agent/app/repo/backup.go @@ -166,13 +166,29 @@ func (u *BackupRepo) GetRecord(opts ...DBOption) (*model.BackupRecord, error) { func (u *BackupRepo) SyncAll(data []model.BackupAccount) error { tx := global.DB.Begin() - if err := tx.Where("is_public = ?", 1).Delete(&model.BackupAccount{}).Error; err != nil { - tx.Rollback() - return err + var oldAccounts []model.BackupAccount + _ = tx.Where("is_public = ?", 1).Find(&oldAccounts).Error + oldAccountMap := make(map[string]uint) + for _, item := range oldAccounts { + oldAccountMap[item.Name] = item.ID } - if err := tx.Model(model.BackupAccount{}).Save(&data).Error; err != nil { - tx.Rollback() - return err + for _, item := range data { + if val, ok := oldAccountMap[item.Name]; ok { + item.ID = val + delete(oldAccountMap, item.Name) + } else { + item.ID = 0 + } + if err := tx.Model(model.BackupAccount{}).Where("id = ?", item.ID).Save(&item).Error; err != nil { + tx.Rollback() + return err + } + } + for _, val := range oldAccountMap { + if err := tx.Where("id = ?", val).Delete(&model.BackupAccount{}).Error; err != nil { + tx.Rollback() + return err + } } tx.Commit() return nil diff --git a/agent/init/migration/migrations/init.go b/agent/init/migration/migrations/init.go index 1f7f0cf43..8ca7c17cd 100644 --- a/agent/init/migration/migrations/init.go +++ b/agent/init/migration/migrations/init.go @@ -101,7 +101,7 @@ var InitSetting = &gormigrate.Migration{ return err } - if err := tx.Create(&model.Setting{Key: "EncryptKey", Value: common.RandStr(16)}).Error; err != nil { + if err := tx.Create(&model.Setting{Key: "EncryptKey", Value: global.CONF.Base.EncryptKey}).Error; err != nil { return err } if err := tx.Create(&model.Setting{Key: "SystemIP", Value: ""}).Error; err != nil { diff --git a/frontend/src/views/setting/backup-account/index.vue b/frontend/src/views/setting/backup-account/index.vue index dcca5bede..32ffc5780 100644 --- a/frontend/src/views/setting/backup-account/index.vue +++ b/frontend/src/views/setting/backup-account/index.vue @@ -1,5 +1,5 @@