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