Skip to content

Commit

Permalink
Increase "version" when update the setting value to a same value as b…
Browse files Browse the repository at this point in the history
…efore (go-gitea#28243)

Setting the same value should not trigger DuplicateKey error, and the
"version" should be increased
  • Loading branch information
wxiaoguang authored Nov 27, 2023
1 parent 8572e71 commit a6aed0f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 1 addition & 1 deletion models/system/setting.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func SetSettings(ctx context.Context, settings map[string]string) error {
return err
}
for k, v := range settings {
res, err := e.Exec("UPDATE system_setting SET setting_value=? WHERE setting_key=?", v, k)
res, err := e.Exec("UPDATE system_setting SET version=version+1, setting_value=? WHERE setting_key=?", v, k)
if err != nil {
return err
}
Expand Down
12 changes: 12 additions & 0 deletions models/system/setting_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,16 @@ func TestSettings(t *testing.T) {
assert.EqualValues(t, 3, rev)
assert.Len(t, settings, 2)
assert.EqualValues(t, "false", settings[keyName])

// setting the same value should not trigger DuplicateKey error, and the "version" should be increased
setting := &system.Setting{SettingKey: keyName}
_, err = db.GetByBean(db.DefaultContext, setting)
assert.NoError(t, err)
assert.EqualValues(t, 2, setting.Version)
err = system.SetSettings(db.DefaultContext, map[string]string{keyName: "false"})
assert.NoError(t, err)
setting = &system.Setting{SettingKey: keyName}
_, err = db.GetByBean(db.DefaultContext, setting)
assert.NoError(t, err)
assert.EqualValues(t, 3, setting.Version)
}

0 comments on commit a6aed0f

Please sign in to comment.