Mercurial > gemma
changeset 3834:d68c6be758b6 sld-colors
Only trigger the reconfiguation functions if the values have changed.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 04 Jul 2019 18:05:08 +0200 |
parents | 70a881045efd |
children | 49052775f57f |
files | pkg/controllers/system.go |
diffstat | 1 files changed, 22 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/controllers/system.go Thu Jul 04 17:44:39 2019 +0200 +++ b/pkg/controllers/system.go Thu Jul 04 18:05:08 2019 +0200 @@ -41,6 +41,11 @@ SELECT config_key, config_val FROM sys_admin.system_config` + getConfigSQL = ` +SELECT config_val +FROM sys_admin.system_config +WHERE config_key = $1` + updateSettingSQL = ` INSERT INTO sys_admin.system_config (config_key, config_val) VALUES ($1, $2) @@ -187,14 +192,28 @@ return } defer setStmt.Close() + var getStmt *sql.Stmt + if getStmt, err = tx.PrepareContext(ctx, getConfigSQL); err != nil { + return + } + defer getStmt.Close() reconfigure := map[string]func(){} for key, value := range *settings { + var old sql.NullString + err = getStmt.QueryRowContext(ctx, key).Scan(&old) + switch { + case err == sql.ErrNoRows: + old.Valid, err = false, nil + case err != nil: + return + } - // XXX: Only trigger this if the value really has changed. - if fn := reconfigureFunc(key); fn != nil { - reconfigure[key] = fn + if !old.Valid || old.String != value { + if fn := reconfigureFunc(key); fn != nil { + reconfigure[key] = fn + } } if _, err = setStmt.ExecContext(ctx, key, value); err != nil {