Files
bamort/backend/cmd/main.go
T

86 lines
2.2 KiB
Go
Raw Normal View History

2025-07-24 07:39:43 +02:00
package main
import (
"bamort/character"
2025-08-10 20:19:30 +02:00
"bamort/config"
2025-07-24 07:39:43 +02:00
"bamort/database"
"bamort/gsmaster"
"bamort/importer"
2025-08-10 20:19:30 +02:00
"bamort/logger"
2025-07-24 07:39:43 +02:00
"bamort/maintenance"
"bamort/router"
"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() {
2025-08-10 20:19:30 +02:00
// Konfiguration laden
cfg := config.LoadConfig()
// 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("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...")
2025-07-24 07:39:43 +02:00
database.ConnectDatabase()
2025-08-10 20:19:30 +02:00
logger.Info("Datenbankverbindung erfolgreich")
2025-07-24 07:39:43 +02:00
// Migrate Audit-Log table
2025-08-10 20:19:30 +02:00
logger.Debug("Führe Audit-Log Migration durch...")
2025-07-24 07:39:43 +02:00
if err := character.MigrateAuditLog(); err != nil {
2025-08-10 20:19:30 +02:00
logger.Error("Fehler bei Audit-Log Migration: %s", err.Error())
2025-07-24 07:39:43 +02:00
panic("Failed to migrate audit log table: " + err.Error())
}
2025-08-10 20:19:30 +02:00
logger.Debug("Audit-Log Migration erfolgreich")
2025-07-24 07:39:43 +02:00
r := gin.Default()
router.SetupGin(r)
2025-08-10 20:19:30 +02:00
// Routes registrieren
logger.Debug("Registriere API-Routen...")
2025-07-24 07:39:43 +02:00
protected := router.BaseRouterGrp(r)
// Register your module routes
gsmaster.RegisterRoutes(protected)
character.RegisterRoutes(protected)
maintenance.RegisterRoutes(protected)
importer.RegisterRoutes(protected)
2025-08-10 20:19:30 +02:00
logger.Info("API-Routen erfolgreich registriert")
2025-07-24 07:39:43 +02:00
2025-08-10 20:19:30 +02:00
// 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)
}
2025-07-24 07:39:43 +02:00
}