Files
calorie-counter/settingsservice.go

48 lines
1.1 KiB
Go

package main
import (
"fmt"
"log"
"reflect"
)
type (
SettingsService struct {
db *DB
}
)
type settings struct {
FoodDaysLookback string
FoodAggregatedDaysLookback string
WeightDaysLookback string
WeightAggregatedDaysLookback string
}
var Settings settings
func (s *SettingsService) LoadSettings() error {
if s.db == nil || !s.db.Ready {
return fmt.Errorf("cannot load Settings, db is nil or is not ready")
}
settingsValue := reflect.ValueOf(&Settings).Elem()
settingsType := settingsValue.Type()
for i := 0; i < settingsValue.NumField(); i++ {
field := settingsType.Field(i)
key := field.Name
var value string
err := s.db.readConn.QueryRow("SELECT value FROM settings WHERE key = ?", key).Scan(&value)
if err != nil {
log.Printf("error getting setting for key %s: %v", key, err)
continue
}
settingsValue.Field(i).SetString(value)
log.Println(key, value)
}
return nil
}