浏览代码

fix: fix options is not updated when using MySQL (close #55)

JustSong 2 年之前
父节点
当前提交
da4b7192fc
共有 1 个文件被更改,包括 8 次插入7 次删除
  1. 8 7
      model/option.go

+ 8 - 7
model/option.go

@@ -59,14 +59,15 @@ func InitOptionMap() {
 func UpdateOption(key string, value string) error {
 	// Save to database first
 	option := Option{
-		Key:   key,
-		Value: value,
-	}
-	// When updating with struct it will only update non-zero fields by default
-	// So we have to use Select here
-	if DB.Model(&option).Where("key = ?", key).Update("value", option.Value).RowsAffected == 0 {
-		DB.Create(&option)
+		Key: key,
 	}
+	// https://gorm.io/docs/update.html#Save-All-Fields
+	DB.FirstOrCreate(&option, Option{Key: key})
+	option.Value = value
+	// Save is a combination function.
+	// If save value does not contain primary key, it will execute Create,
+	// otherwise it will execute Update (with all fields).
+	DB.Save(&option)
 	// Update OptionMap
 	updateOptionMap(key, value)
 	return nil