Add settings and implement auto default

This commit is contained in:
2024-08-09 16:29:53 +02:00
parent a29213f35f
commit 66a6cb69d6
2 changed files with 36 additions and 18 deletions

View File

@@ -13,10 +13,19 @@ type (
)
type settings struct {
FoodDaysLookback string
FoodAggregatedDaysLookback string
WeightDaysLookback string
WeightAggregatedDaysLookback string
FoodDaysLookback int
FoodAggregatedDaysLookback int
FoodDailyLookback int
FoodWeeklyLookback int
FoodMonthlyLookback int
FoodYearlyLookback int
WeightDaysLookback int
WeightAggregatedDaysLookback int
WeightDailyLookback int
WeightWeeklyLookback int
WeightMonthlyLookback int
WeightYearlyLookback int
}
var Settings settings
@@ -26,22 +35,26 @@ func (s *SettingsService) LoadSettings() error {
return fmt.Errorf("cannot load Settings, db is nil or is not ready")
}
settingsValue := reflect.ValueOf(&Settings).Elem()
settingsType := settingsValue.Type()
settingsValue := reflect.ValueOf(&Settings).Elem()
settingsType := settingsValue.Type()
for i := 0; i < settingsValue.NumField(); i++ {
field := settingsType.Field(i)
key := field.Name
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
}
var value int
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; setting default", key, err)
_, err := s.db.writeConn.Exec("INSERT INTO settings (key, value) VALUES (?, ?)", key, field.Tag.Get("default"))
if err != nil {
log.Printf("error inserting setting for key %s: %v", key, err)
continue
}
}
settingsValue.Field(i).SetString(value)
log.Println(key, value)
}
settingsValue.Field(i).SetInt(int64(value))
log.Println(key, value)
}
return nil
}