Add settings and implement auto default
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user