104 lines
2.8 KiB
Go
104 lines
2.8 KiB
Go
package main
|
|
|
|
import (
|
|
"bamort/config"
|
|
"bamort/database"
|
|
"bamort/logger"
|
|
"bamort/registry"
|
|
"bamort/router"
|
|
|
|
// Blank imports trigger each module's init(), which self-registers
|
|
// routes and migrations with the central registry.
|
|
_ "bamort/appsystem"
|
|
_ "bamort/bmrt/character"
|
|
_ "bamort/bmrt/equipment"
|
|
_ "bamort/bmrt/gamesystem"
|
|
_ "bamort/bmrt/gsmaster"
|
|
_ "bamort/bmrt/importer"
|
|
_ "bamort/bmrt/maintenance"
|
|
_ "bamort/bmrt/models"
|
|
_ "bamort/bmrt/pdfrender"
|
|
_ "bamort/bmrt/ptpl"
|
|
_ "bamort/bmrt/transfer"
|
|
_ "bamort/user"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// @title BaMoRT API
|
|
// @version 1
|
|
// @description This is the API for BaMoRT
|
|
// @host localhost:8180
|
|
// @BasePath /
|
|
// @schemes http
|
|
func main() {
|
|
// Verwende die globale Konfigurationsvariable (bereits in config.init() geladen)
|
|
cfg := config.Cfg
|
|
|
|
// Logger konfigurieren
|
|
logger.SetDebugMode(cfg.DebugMode)
|
|
if cfg.LogLevel == "DEBUG" {
|
|
logger.SetMinLogLevel(logger.DEBUG)
|
|
} else if cfg.LogLevel == "WARN" {
|
|
logger.SetMinLogLevel(logger.WARN)
|
|
} else if cfg.LogLevel == "ERROR" {
|
|
logger.SetMinLogLevel(logger.ERROR)
|
|
} else {
|
|
logger.SetMinLogLevel(logger.INFO)
|
|
}
|
|
|
|
logger.Info("BaMoRT Server wird gestartet...")
|
|
logger.Debug("Debug-Modus ist aktiviert")
|
|
logger.Info("Environment: %s", cfg.Environment)
|
|
logger.Info("testingDB Set: %s", cfg.DevTesting)
|
|
logger.Info("Server Port: %s", cfg.ServerPort)
|
|
|
|
// Gin-Modus basierend auf Environment setzen
|
|
if cfg.IsProduction() {
|
|
gin.SetMode(gin.ReleaseMode)
|
|
logger.Info("Gin läuft im Release-Modus")
|
|
} else {
|
|
gin.SetMode(gin.DebugMode)
|
|
logger.Debug("Gin läuft im Debug-Modus")
|
|
}
|
|
|
|
// Datenbank verbinden
|
|
logger.Debug("Verbinde mit Datenbank...")
|
|
database.ConnectDatabase()
|
|
logger.Info("Datenbankverbindung erfolgreich")
|
|
|
|
// Run all registered migrations
|
|
logger.Debug("Führe Datenbankmigrationen aus...")
|
|
if err := registry.RunAllMigrations(database.DB); err != nil {
|
|
logger.Error("Fehler bei Datenbankmigrationen: %s", err.Error())
|
|
panic(err)
|
|
}
|
|
logger.Info("Datenbankmigrationen erfolgreich")
|
|
|
|
// Run all registered initializers (post-migration startup tasks)
|
|
logger.Debug("Führe Initialisierer aus...")
|
|
registry.RunAllInitializers(database.DB)
|
|
logger.Info("Initialisierer erfolgreich ausgeführt")
|
|
|
|
r := gin.Default()
|
|
router.SetupGin(r)
|
|
|
|
// Routes registrieren (alle Module via registry)
|
|
logger.Debug("Registriere API-Routen...")
|
|
protected := router.BaseRouterGrp(r)
|
|
registry.RunAllRoutes(protected)
|
|
|
|
// Öffentliche Routen registrieren
|
|
registry.RunAllPublicRoutes(r)
|
|
|
|
logger.Info("API-Routen erfolgreich registriert")
|
|
|
|
// Server starten
|
|
serverAddress := cfg.GetServerAddress()
|
|
logger.Info("Server startet auf Adresse: %s", serverAddress)
|
|
if err := r.Run(serverAddress); err != nil {
|
|
logger.Error("Fehler beim Starten des Servers: %s", err.Error())
|
|
panic(err)
|
|
}
|
|
}
|