Skip to content

Commit a6aed0f

Browse files
authored
Increase "version" when update the setting value to a same value as before (#28243)
Setting the same value should not trigger DuplicateKey error, and the "version" should be increased
1 parent 8572e71 commit a6aed0f

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

models/system/setting.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func SetSettings(ctx context.Context, settings map[string]string) error {
8181
return err
8282
}
8383
for k, v := range settings {
84-
res, err := e.Exec("UPDATE system_setting SET setting_value=? WHERE setting_key=?", v, k)
84+
res, err := e.Exec("UPDATE system_setting SET version=version+1, setting_value=? WHERE setting_key=?", v, k)
8585
if err != nil {
8686
return err
8787
}

models/system/setting_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,16 @@ func TestSettings(t *testing.T) {
3939
assert.EqualValues(t, 3, rev)
4040
assert.Len(t, settings, 2)
4141
assert.EqualValues(t, "false", settings[keyName])
42+
43+
// setting the same value should not trigger DuplicateKey error, and the "version" should be increased
44+
setting := &system.Setting{SettingKey: keyName}
45+
_, err = db.GetByBean(db.DefaultContext, setting)
46+
assert.NoError(t, err)
47+
assert.EqualValues(t, 2, setting.Version)
48+
err = system.SetSettings(db.DefaultContext, map[string]string{keyName: "false"})
49+
assert.NoError(t, err)
50+
setting = &system.Setting{SettingKey: keyName}
51+
_, err = db.GetByBean(db.DefaultContext, setting)
52+
assert.NoError(t, err)
53+
assert.EqualValues(t, 3, setting.Version)
4254
}

0 commit comments

Comments
 (0)