42 lines
917 B
Go
42 lines
917 B
Go
package settings
|
|
|
|
import "database/sql"
|
|
|
|
type SettingsService struct {
|
|
db *sql.DB
|
|
}
|
|
|
|
func NewSettingsService(db *sql.DB) *SettingsService {
|
|
return &SettingsService{db: db}
|
|
}
|
|
|
|
func (s *SettingsService) Get(key string) (string, error) {
|
|
var value string
|
|
err := s.db.QueryRow("SELECT value FROM settings WHERE key = ?", key).Scan(&value)
|
|
if err == sql.ErrNoRows {
|
|
return "", nil
|
|
}
|
|
return value, err
|
|
}
|
|
|
|
func (s *SettingsService) GetDefault(key, defaultValue string) string {
|
|
val, err := s.Get(key)
|
|
if err != nil || val == "" {
|
|
return defaultValue
|
|
}
|
|
return val
|
|
}
|
|
|
|
func (s *SettingsService) Set(key, value string) error {
|
|
_, err := s.db.Exec(
|
|
"INSERT INTO settings (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = ?",
|
|
key, value, value,
|
|
)
|
|
return err
|
|
}
|
|
|
|
func (s *SettingsService) Delete(key string) error {
|
|
_, err := s.db.Exec("DELETE FROM settings WHERE key = ?", key)
|
|
return err
|
|
}
|