package models import ( "time" "gorm.io/gorm" "gorm.io/gorm/clause" ) type SystemSetting struct { ID uint `json:"id" gorm:"primaryKey;autoIncrement"` Key string `json:"key" gorm:"column:key;type:varchar(255);uniqueIndex:ix_system_settings_key;not null"` Value string `json:"value" gorm:"type:text;not null"` Encrypted bool `json:"encrypted" gorm:"not null"` UpdatedAt time.Time `json:"updated_at" gorm:"not null;autoUpdateTime"` } func GetSetting(db *gorm.DB, key string) string { var setting SystemSetting result := db.Where("`key` = ?", key).First(&setting) if result.Error != nil { return "" } return setting.Value } func SetSetting(db *gorm.DB, key, value string, encrypted bool) { setting := SystemSetting{ Key: key, Value: value, Encrypted: encrypted, } db.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "key"}}, DoUpdates: clause.AssignmentColumns([]string{"value", "encrypted", "updated_at"}), }).Create(&setting) }