Files
feedmee/backend/main.go

70 lines
1.3 KiB
Go

package main
import (
"log/slog"
"net/http"
"os"
"menu/handlers"
"github.com/joho/godotenv"
)
var (
Version = "0.8.0"
BuildTime = "-"
)
func main() {
setupDefaultLogger()
err := godotenv.Load()
if err != nil {
slog.Warn("Cannot find .env file, using system env variables")
}
adminUser := os.Getenv("ADMIN_USER")
adminPass := os.Getenv("ADMIN_PASS")
if adminUser == "" {
slog.Error("Missing ADMIN_USER env variable")
os.Exit(1)
}
if adminPass == "" {
slog.Error("Missing ADMIN_PASS env variable")
os.Exit(1)
}
// Setup data directory
dataDir, err := setupDataDir()
if err != nil {
slog.Error("Cannot set data directory: %s; %w", os.Getenv("DATA_DIR"), err)
os.Exit(1)
}
// Setup database connection
dbConnection, err := NewDatabaseConnection(dataDir, "app.db")
if err != nil {
slog.Error("Databse error", "error", err)
os.Exit(1)
}
db := database(dbConnection)
defer db.Close()
// Create App
app := handlers.NewApp(db, handlers.NewBroker())
// Create server
srv := NewServer(app, "0.0.0.0:7153", "*")
// Start background cleanup service
go handlers.StartDailyCleanup(app)
slog.Info("Server started", "address", srv.Addr)
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
slog.Error("Cannot start server", "error", err)
os.Exit(1)
}
}