Files
feedmee/backend/main.go

70 lines
1.4 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")
}
adminPass := os.Getenv("ADMIN_PASS")
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", "dir", os.Getenv("DATA_DIR"), "error", 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)
}
// Migrate database
MigrateDatabase(dbConnection)
SeedDatabase(dbConnection, adminPass)
updateSuperadminPassword(dbConnection, adminPass)
// db := database(dbConnection)
defer dbConnection.Close()
// Create App
app := handlers.NewApp(dbConnection, 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)
}
}