From dc020499b8937b616fb3efa74e9923f526e24e88 Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Fri, 3 Jan 2025 22:38:10 +0800 Subject: [PATCH] feat(files): Fix Issue with Recycle Bin Failing to Enable (#7636) --- agent/app/repo/setting.go | 29 +++++++++++-------- agent/app/service/setting.go | 17 +---------- .../file-management/recycle-bin/index.vue | 4 +-- 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/agent/app/repo/setting.go b/agent/app/repo/setting.go index a8c4f237c..c7416dfc9 100644 --- a/agent/app/repo/setting.go +++ b/agent/app/repo/setting.go @@ -24,13 +24,14 @@ type ISettingRepo interface { DelMonitorBase(timeForDelete time.Time) error DelMonitorIO(timeForDelete time.Time) error DelMonitorNet(timeForDelete time.Time) error + UpdateOrCreate(key, value string) error } func NewISettingRepo() ISettingRepo { return &SettingRepo{} } -func (u *SettingRepo) GetList(opts ...DBOption) ([]model.Setting, error) { +func (s *SettingRepo) GetList(opts ...DBOption) ([]model.Setting, error) { var settings []model.Setting db := global.DB.Model(&model.Setting{}) for _, opt := range opts { @@ -40,7 +41,7 @@ func (u *SettingRepo) GetList(opts ...DBOption) ([]model.Setting, error) { return settings, err } -func (u *SettingRepo) Create(key, value string) error { +func (s *SettingRepo) Create(key, value string) error { setting := &model.Setting{ Key: key, Value: value, @@ -48,7 +49,7 @@ func (u *SettingRepo) Create(key, value string) error { return global.DB.Create(setting).Error } -func (u *SettingRepo) Get(opts ...DBOption) (model.Setting, error) { +func (s *SettingRepo) Get(opts ...DBOption) (model.Setting, error) { var settings model.Setting db := global.DB.Model(&model.Setting{}) for _, opt := range opts { @@ -58,7 +59,7 @@ func (u *SettingRepo) Get(opts ...DBOption) (model.Setting, error) { return settings, err } -func (u *SettingRepo) GetValueByKey(key string) (string, error) { +func (s *SettingRepo) GetValueByKey(key string) (string, error) { var setting model.Setting if err := global.DB.Model(&model.Setting{}).Where("key = ?", key).First(&setting).Error; err != nil { global.LOG.Errorf("load %s from db setting failed, err: %v", key, err) @@ -67,31 +68,35 @@ func (u *SettingRepo) GetValueByKey(key string) (string, error) { return setting.Value, nil } -func (c *SettingRepo) WithByKey(key string) DBOption { +func (s *SettingRepo) WithByKey(key string) DBOption { return func(g *gorm.DB) *gorm.DB { return g.Where("key = ?", key) } } -func (u *SettingRepo) Update(key, value string) error { +func (s *SettingRepo) Update(key, value string) error { return global.DB.Model(&model.Setting{}).Where("key = ?", key).Updates(map[string]interface{}{"value": value}).Error } -func (u *SettingRepo) CreateMonitorBase(model model.MonitorBase) error { +func (s *SettingRepo) CreateMonitorBase(model model.MonitorBase) error { return global.MonitorDB.Create(&model).Error } -func (u *SettingRepo) BatchCreateMonitorIO(ioList []model.MonitorIO) error { +func (s *SettingRepo) BatchCreateMonitorIO(ioList []model.MonitorIO) error { return global.MonitorDB.CreateInBatches(ioList, len(ioList)).Error } -func (u *SettingRepo) BatchCreateMonitorNet(ioList []model.MonitorNetwork) error { +func (s *SettingRepo) BatchCreateMonitorNet(ioList []model.MonitorNetwork) error { return global.MonitorDB.CreateInBatches(ioList, len(ioList)).Error } -func (u *SettingRepo) DelMonitorBase(timeForDelete time.Time) error { +func (s *SettingRepo) DelMonitorBase(timeForDelete time.Time) error { return global.MonitorDB.Where("created_at < ?", timeForDelete).Delete(&model.MonitorBase{}).Error } -func (u *SettingRepo) DelMonitorIO(timeForDelete time.Time) error { +func (s *SettingRepo) DelMonitorIO(timeForDelete time.Time) error { return global.MonitorDB.Where("created_at < ?", timeForDelete).Delete(&model.MonitorIO{}).Error } -func (u *SettingRepo) DelMonitorNet(timeForDelete time.Time) error { +func (s *SettingRepo) DelMonitorNet(timeForDelete time.Time) error { return global.MonitorDB.Where("created_at < ?", timeForDelete).Delete(&model.MonitorNetwork{}).Error } + +func (s *SettingRepo) UpdateOrCreate(key, value string) error { + return global.DB.Model(&model.Setting{}).Where("key = ?", key).Assign(model.Setting{Key: key, Value: value}).FirstOrCreate(&model.Setting{}).Error +} diff --git a/agent/app/service/setting.go b/agent/app/service/setting.go index 7758f3bca..dc24eba07 100644 --- a/agent/app/service/setting.go +++ b/agent/app/service/setting.go @@ -48,22 +48,7 @@ func (u *SettingService) GetSettingInfo() (*dto.SettingInfo, error) { } func (u *SettingService) Update(key, value string) error { - switch key { - case "AppStoreLastModified": - exist, _ := settingRepo.Get(settingRepo.WithByKey("AppStoreLastModified")) - if exist.ID == 0 { - return settingRepo.Create("AppStoreLastModified", value) - } - case "AppDefaultDomain": - exist, _ := settingRepo.Get(settingRepo.WithByKey("AppDefaultDomain")) - if exist.ID == 0 { - return settingRepo.Create("AppDefaultDomain", value) - } - } - if err := settingRepo.Update(key, value); err != nil { - return err - } - return nil + return settingRepo.UpdateOrCreate(key, value) } func (u *SettingService) ReloadConn() error { diff --git a/frontend/src/views/host/file-management/recycle-bin/index.vue b/frontend/src/views/host/file-management/recycle-bin/index.vue index 038427598..ef5123804 100644 --- a/frontend/src/views/host/file-management/recycle-bin/index.vue +++ b/frontend/src/views/host/file-management/recycle-bin/index.vue @@ -65,8 +65,8 @@ import { dateFormat, computeSize } from '@/utils/util'; import i18n from '@/lang'; import Delete from './delete/index.vue'; import Reduce from './reduce/index.vue'; -import { updateSetting } from '@/api/modules/setting'; import { MsgSuccess } from '@/utils/message'; +import { updateAgentSetting } from '@/api/modules/setting'; const open = ref(false); const req = reactive({ @@ -114,7 +114,7 @@ const getStatus = async () => { const changeStatus = async () => { try { loading.value = true; - await updateSetting({ key: 'FileRecycleBin', value: status.value }); + await updateAgentSetting({ key: 'FileRecycleBin', value: status.value }); MsgSuccess(i18n.global.t('file.fileRecycleBinMsg', [i18n.global.t('commons.button.' + status.value)])); loading.value = false; } catch (error) {}