94 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"embed"
 | 
						|
	"flag"
 | 
						|
	"fmt"
 | 
						|
	"io"
 | 
						|
	"log"
 | 
						|
	"os"
 | 
						|
	_ "embed"
 | 
						|
 | 
						|
	"github.com/wailsapp/wails/v2"
 | 
						|
	"github.com/wailsapp/wails/v2/pkg/options"
 | 
						|
	"github.com/wailsapp/wails/v2/pkg/options/assetserver"
 | 
						|
)
 | 
						|
 | 
						|
//go:embed all:frontend/dist
 | 
						|
var assets embed.FS
 | 
						|
 | 
						|
var Error *log.Logger
 | 
						|
 | 
						|
func init() {
 | 
						|
	log.SetFlags(log.Lmicroseconds | log.Lshortfile)
 | 
						|
	logFile, err := os.Create("main.log")
 | 
						|
	if err != nil {
 | 
						|
		log.Printf("Error creating log file: %v", err)
 | 
						|
		os.Exit(1)
 | 
						|
	}
 | 
						|
	logger := io.MultiWriter(os.Stdout, logFile)
 | 
						|
	log.SetOutput(logger)
 | 
						|
 | 
						|
	Error = log.New(io.MultiWriter(logFile, os.Stderr, os.Stdout),
 | 
						|
		fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"),
 | 
						|
		log.Lmicroseconds|log.Lshortfile)
 | 
						|
}
 | 
						|
 | 
						|
var (
 | 
						|
	settingsService *SettingsService
 | 
						|
	foodService     *FoodService
 | 
						|
	weightService   *WeightService
 | 
						|
)
 | 
						|
 | 
						|
//go:embed food.ddl
 | 
						|
var foodDDL string
 | 
						|
 | 
						|
// 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() {
 | 
						|
	dbpath := flag.String("db", "food.db", "Path to the database file")
 | 
						|
	flag.Parse()
 | 
						|
 | 
						|
	db := DB{path: *dbpath}
 | 
						|
	err := db.Open()
 | 
						|
	if err != nil {
 | 
						|
		Error.Printf("%++v", err)
 | 
						|
		os.Exit(1)
 | 
						|
	}
 | 
						|
	defer db.Close()
 | 
						|
	db.Init(foodDDL)
 | 
						|
 | 
						|
	settingsService = &SettingsService{db: &db}
 | 
						|
	err = settingsService.LoadSettings()
 | 
						|
	if err != nil {
 | 
						|
		Error.Printf("%++v", err)
 | 
						|
		os.Exit(1)
 | 
						|
	}
 | 
						|
	log.Printf("Loaded settings as: %++v", Settings)
 | 
						|
 | 
						|
	foodService = &FoodService{db: &db}
 | 
						|
	weightService = &WeightService{db: &db}
 | 
						|
 | 
						|
	// Create an instance of the app structure
 | 
						|
	app := NewApp()
 | 
						|
 | 
						|
	// Create application with options
 | 
						|
	err = wails.Run(&options.App{
 | 
						|
		Title:  "calorie-counter",
 | 
						|
		Width:  1920,
 | 
						|
		Height: 1080,
 | 
						|
		AssetServer: &assetserver.Options{
 | 
						|
			Assets: assets,
 | 
						|
		},
 | 
						|
		BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1},
 | 
						|
		OnStartup:        app.startup,
 | 
						|
		Bind: []interface{}{
 | 
						|
			app,
 | 
						|
		},
 | 
						|
	})
 | 
						|
 | 
						|
	if err != nil {
 | 
						|
		println("Error:", err.Error())
 | 
						|
	}
 | 
						|
}
 |