Implement settings api
This commit is contained in:
9
app.go
9
app.go
@@ -20,6 +20,7 @@ func (a *App) startup(ctx context.Context) {
|
|||||||
a.ctx = ctx
|
a.ctx = ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// region food
|
||||||
func (a *App) GetFood() WailsFood {
|
func (a *App) GetFood() WailsFood {
|
||||||
data, err := foodService.GetRecent()
|
data, err := foodService.GetRecent()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -43,3 +44,11 @@ func (a *App) UpdateFood(food Food) WailsFood1 {
|
|||||||
}
|
}
|
||||||
return WailsFood1{Data: data, Success: true}
|
return WailsFood1{Data: data, Success: true}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// region settings
|
||||||
|
func (a *App) GetSettings() settings {
|
||||||
|
return Settings
|
||||||
|
}
|
||||||
|
func (a *App) SetSetting(key string, value any) settings {
|
||||||
|
return settingsService.Set(key, value)
|
||||||
|
}
|
@@ -50,7 +50,7 @@ func (s *SettingsService) LoadSettings() error {
|
|||||||
log.Printf("error getting setting for key %s: %v; setting default", key, err)
|
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"))
|
_, err := s.db.writeConn.Exec("INSERT INTO settings (key, value) VALUES (?, ?)", key, field.Tag.Get("default"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("error inserting setting for key %s: %v", key, err)
|
Error.Printf("error inserting setting for key %s: %v", key, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,3 +60,24 @@ func (s *SettingsService) LoadSettings() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
func (s *SettingsService) Set(key string, value any) settings {
|
||||||
|
fields := reflect.ValueOf(&Settings).Elem()
|
||||||
|
for i := 0; i < fields.NumField(); i++ {
|
||||||
|
field := fields.Type().Field(i)
|
||||||
|
if field.Name == key {
|
||||||
|
fields.Field(i).SetInt(value.(int64))
|
||||||
|
|
||||||
|
// This could cause desync between client and server
|
||||||
|
// But we can just refresh, I think it's fine
|
||||||
|
go func() {
|
||||||
|
_, err := s.db.writeConn.Exec("UPDATE settings SET value = ? WHERE key = ?", value, key)
|
||||||
|
if err != nil {
|
||||||
|
Error.Printf("error updating setting for key %s: %v", key)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
return Settings
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Settings
|
||||||
|
}
|
Reference in New Issue
Block a user