Lucky manta ray
This commit is contained in:
65
db/db.go
65
db/db.go
@@ -191,6 +191,71 @@ func (s *Store) MarkTriggered(id int) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// Settings holds all configurable app settings.
|
||||
type Settings struct {
|
||||
SnoozeMinutes int
|
||||
TimeoutMinutes int
|
||||
DefaultSound string
|
||||
BlinkOnMs int
|
||||
BlinkOffMs int
|
||||
ColorClock string
|
||||
ColorAlarm string
|
||||
}
|
||||
|
||||
func DefaultSettings() Settings {
|
||||
return Settings{
|
||||
SnoozeMinutes: 5,
|
||||
TimeoutMinutes: 5,
|
||||
DefaultSound: "default",
|
||||
BlinkOnMs: 1000,
|
||||
BlinkOffMs: 500,
|
||||
ColorClock: "#00FF88",
|
||||
ColorAlarm: "#FF4444",
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Store) LoadSettings() Settings {
|
||||
cfg := DefaultSettings()
|
||||
cfg.SnoozeMinutes = s.getSettingInt("snooze_minutes", cfg.SnoozeMinutes)
|
||||
cfg.TimeoutMinutes = s.getSettingInt("timeout_minutes", cfg.TimeoutMinutes)
|
||||
cfg.DefaultSound = s.GetSetting("default_sound", cfg.DefaultSound)
|
||||
cfg.BlinkOnMs = s.getSettingInt("blink_on_ms", cfg.BlinkOnMs)
|
||||
cfg.BlinkOffMs = s.getSettingInt("blink_off_ms", cfg.BlinkOffMs)
|
||||
cfg.ColorClock = s.GetSetting("color_clock", cfg.ColorClock)
|
||||
cfg.ColorAlarm = s.GetSetting("color_alarm", cfg.ColorAlarm)
|
||||
return cfg
|
||||
}
|
||||
|
||||
func (s *Store) SaveSettings(cfg Settings) error {
|
||||
pairs := map[string]string{
|
||||
"snooze_minutes": fmt.Sprintf("%d", cfg.SnoozeMinutes),
|
||||
"timeout_minutes": fmt.Sprintf("%d", cfg.TimeoutMinutes),
|
||||
"default_sound": cfg.DefaultSound,
|
||||
"blink_on_ms": fmt.Sprintf("%d", cfg.BlinkOnMs),
|
||||
"blink_off_ms": fmt.Sprintf("%d", cfg.BlinkOffMs),
|
||||
"color_clock": cfg.ColorClock,
|
||||
"color_alarm": cfg.ColorAlarm,
|
||||
}
|
||||
for k, v := range pairs {
|
||||
if err := s.SetSetting(k, v); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Store) getSettingInt(key string, defaultVal int) int {
|
||||
val := s.GetSetting(key, "")
|
||||
if val == "" {
|
||||
return defaultVal
|
||||
}
|
||||
var n int
|
||||
if _, err := fmt.Sscanf(val, "%d", &n); err != nil {
|
||||
return defaultVal
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func (s *Store) GetSetting(key, defaultVal string) string {
|
||||
var val string
|
||||
err := s.db.QueryRow(`SELECT value FROM settings WHERE key = ?`, key).Scan(&val)
|
||||
|
||||
Reference in New Issue
Block a user