Use session for ServerConfigSet to make it atomic (#4116)

This commit is contained in:
6543 2024-09-16 14:20:47 +02:00 committed by GitHub
parent 41b2127e04
commit 4dd4d9755d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -31,7 +31,13 @@ func (s storage) ServerConfigSet(key, value string) error {
Key: key,
}
count, err := s.engine.Count(config)
sess := s.engine.NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return err
}
count, err := sess.Count(config)
if err != nil {
return err
}
@ -39,12 +45,15 @@ func (s storage) ServerConfigSet(key, value string) error {
config.Value = value
if count == 0 {
_, err := s.engine.Insert(config)
_, err = sess.Insert(config)
} else {
_, err = sess.Where("`key` = ?", config.Key).Cols("value").Update(config)
}
if err != nil {
return err
}
_, err = s.engine.Where("`key` = ?", config.Key).Cols("value").Update(config)
return err
return sess.Commit()
}
func (s storage) ServerConfigDelete(key string) error {