70 lines
1.3 KiB
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)
|
|
}
|
|
}
|