use an enum for db settings
This commit is contained in:
40
db/db.go
40
db/db.go
@@ -54,22 +54,6 @@ func NewMock() (*DB, error) {
|
||||
return New(":memory:", mockOptions())
|
||||
}
|
||||
|
||||
func (db *DB) GetSetting(key string) (string, error) {
|
||||
var setting Setting
|
||||
if err := db.Where("key=?", key).First(&setting).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return "", err
|
||||
}
|
||||
return setting.Value, nil
|
||||
}
|
||||
|
||||
func (db *DB) SetSetting(key, value string) error {
|
||||
return db.
|
||||
Where("key=?", key).
|
||||
Assign(Setting{Key: key, Value: value}).
|
||||
FirstOrCreate(&Setting{}).
|
||||
Error
|
||||
}
|
||||
|
||||
func (db *DB) InsertBulkLeftMany(table string, head []string, left int, col []int) error {
|
||||
if len(col) == 0 {
|
||||
return nil
|
||||
@@ -137,3 +121,27 @@ func (db *DB) TransactionChunked(data []int64, cb ChunkFunc) error {
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
type SettingKey string
|
||||
|
||||
const (
|
||||
LastFMAPIKey SettingKey = "lastfm_api_key" //nolint:gosec
|
||||
LastFMSecret SettingKey = "lastfm_secret"
|
||||
LastScanTime SettingKey = "last_scan_time"
|
||||
)
|
||||
|
||||
func (db *DB) GetSetting(key SettingKey) (string, error) {
|
||||
var setting Setting
|
||||
if err := db.Where("key=?", key).First(&setting).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return "", err
|
||||
}
|
||||
return setting.Value, nil
|
||||
}
|
||||
|
||||
func (db *DB) SetSetting(key SettingKey, value string) error {
|
||||
return db.
|
||||
Where("key=?", key).
|
||||
Assign(Setting{Key: key, Value: value}).
|
||||
FirstOrCreate(&Setting{}).
|
||||
Error
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ func randKey() string {
|
||||
}
|
||||
|
||||
func TestGetSetting(t *testing.T) {
|
||||
key := randKey()
|
||||
key := SettingKey(randKey())
|
||||
value := "howdy"
|
||||
|
||||
require := require.New(t)
|
||||
|
||||
@@ -174,8 +174,8 @@ type User struct {
|
||||
}
|
||||
|
||||
type Setting struct {
|
||||
Key string `gorm:"not null; primary_key; auto_increment:false" sql:"default: null"`
|
||||
Value string `sql:"default: null"`
|
||||
Key SettingKey `gorm:"not null; primary_key; auto_increment:false" sql:"default: null"`
|
||||
Value string `sql:"default: null"`
|
||||
}
|
||||
|
||||
type Play struct {
|
||||
|
||||
Reference in New Issue
Block a user