diff --git a/main.go b/main.go index de0aacb..583f7a7 100644 --- a/main.go +++ b/main.go @@ -24,7 +24,7 @@ func init() { logFile, err := os.Create("main.log") if err != nil { log.Printf("Error creating log file: %v", err) - os.Exit(1) + return } logger := io.MultiWriter(os.Stdout, logFile) log.SetOutput(logger) @@ -42,37 +42,59 @@ var ( //go:embed food.ddl var foodDDL string +//go:embed spellfix.dll +var spellfixDll []byte // TODO: Embed food.ddl and create DB if no exists // TODO: Add averages to graphs (ie. R2) https://stackoverflow.com/questions/60622195/how-to-draw-a-linear-regression-line-in-chart-js func main() { + _, err := os.Open("spellfix.dll") + if err != nil && !os.IsNotExist(err) { + Error.Printf("Error looking for spellfix.dll: %v", err) + return + } + if err != nil && os.IsNotExist(err) { + log.Printf("No spellfix.dll found, creating...") + file, err := os.Create("spellfix.dll") + if err != nil { + Error.Printf("Error creating spellfix.dll: %v", err) + return + } + _, err = file.Write(spellfixDll) + if err != nil { + Error.Printf("Error writing spellfix.dll: %v", err) + return + } + file.Close() + } + dbpath := flag.String("db", "food.db", "Path to the database file") flag.Parse() db := DB{path: *dbpath} - err := db.Open() + err = db.Open() if err != nil { Error.Printf("%++v", err) - os.Exit(1) + return } defer db.Close() err = db.Init(foodDDL) if err != nil { Error.Printf("Error initializing database: %++v", err) - os.Exit(1) + return } settingsService = &SettingsService{db: &db} err = settingsService.LoadSettings() if err != nil { Error.Printf("%++v", err) - os.Exit(1) + return } log.Printf("Loaded settings as: %++v", Settings) foodService = &FoodService{db: &db} weightService = &WeightService{db: &db} - + // Create an instance of the app structure app := NewApp()