From 56e0ef49a047bda2b1102cebef39fd86a9a3315d Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Fri, 9 Aug 2024 15:16:02 +0200 Subject: [PATCH] Implement settingsservice --- .gitignore | 3 +++ db.go | 4 +++- foodservice.go | 5 +++++ main.go | 8 ++++++++ main.log | 1 - settingsservice.go | 37 +++++++++++++++++++++++++++++++++++++ types.go | 5 ----- weightservice.go | 5 +++++ 8 files changed, 61 insertions(+), 7 deletions(-) delete mode 100644 main.log diff --git a/.gitignore b/.gitignore index d2bb30b..bd85d31 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ node_modules frontend/dist tmp food.db +food.db-shm +food.db-wal +main.log diff --git a/db.go b/db.go index 2fa84b8..feab0cd 100644 --- a/db.go +++ b/db.go @@ -9,6 +9,7 @@ import ( ) type DB struct { + Ready bool path string readConn *sql.DB writeConn *sql.DB @@ -39,6 +40,7 @@ func (db *DB) Open() error { readConn.SetConnMaxLifetime(30 * time.Second) db.readConn = readConn + db.Ready = true return nil } @@ -54,4 +56,4 @@ func (db *DB) Close() error { } return nil -} \ No newline at end of file +} diff --git a/foodservice.go b/foodservice.go index e69de29..815734c 100644 --- a/foodservice.go +++ b/foodservice.go @@ -0,0 +1,5 @@ +package main + +type FoodService struct { + db *DB +} \ No newline at end of file diff --git a/main.go b/main.go index b5bb508..c18a92f 100644 --- a/main.go +++ b/main.go @@ -47,6 +47,14 @@ func main() { os.Exit(1) } + settingsService := SettingsService{db: &db} + settings, err := settingsService.LoadSettings() + if err != nil { + Error.Printf("%++v", err) + os.Exit(1) + } + log.Println(settings) + log.Println("done") wg.Wait() diff --git a/main.log b/main.log deleted file mode 100644 index ed99882..0000000 --- a/main.log +++ /dev/null @@ -1 +0,0 @@ -15:05:28.134465 main.go:50: done diff --git a/settingsservice.go b/settingsservice.go index e69de29..bc326d1 100644 --- a/settingsservice.go +++ b/settingsservice.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + "log" +) + +type ( + SettingsService struct { + db *DB + } +) + +var Settings map[string]string = map[string]string{ + "FoodDaysLookback": "7", + "FoodAggregatedDaysLookback": "7", + "WeightDaysLookback": "7", + "WeightAggregatedDaysLookback": "7", +} + +func (s *SettingsService) LoadSettings() (map[string]string, error) { + if s.db == nil || !s.db.Ready { + return Settings, fmt.Errorf("cannot load Settings, db is nil or is not ready") + } + + for key := range Settings { + var value string + err := s.db.readConn.QueryRow("SELECT value FROM settings WHERE key = ?", key).Scan(&value) + if err != nil { + Error.Printf("error getting setting for key %s: %++v", key, err) + continue + } + log.Println(key, value) + } + + return Settings, nil +} diff --git a/types.go b/types.go index 00304dc..06aba48 100644 --- a/types.go +++ b/types.go @@ -3,11 +3,6 @@ package main import "time" type ( - Setting struct { - key string - value string - } - Food struct { rowid int date time.Time diff --git a/weightservice.go b/weightservice.go index e69de29..77dc104 100644 --- a/weightservice.go +++ b/weightservice.go @@ -0,0 +1,5 @@ +package main + +type WeightService struct { + db *DB +} \ No newline at end of file