33 lines
766 B
Go
33 lines
766 B
Go
package store
|
|
|
|
import (
|
|
"database/sql"
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
// GetSetting returns a settings value or empty string when missing.
|
|
func (s *Store) GetSetting(key string) (string, error) {
|
|
var value string
|
|
err := s.db.QueryRow("SELECT value FROM settings WHERE key = ?", key).Scan(&value)
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
return "", nil
|
|
}
|
|
if err != nil {
|
|
return "", fmt.Errorf("get setting %s: %w", key, err)
|
|
}
|
|
return value, nil
|
|
}
|
|
|
|
// SetSetting upserts a settings key.
|
|
func (s *Store) SetSetting(key, value string) error {
|
|
_, err := s.db.Exec(
|
|
"INSERT INTO settings (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",
|
|
key, value,
|
|
)
|
|
if err != nil {
|
|
return fmt.Errorf("set setting %s: %w", key, err)
|
|
}
|
|
return nil
|
|
}
|