package main import ( "log" "os" "github.com/gin-gonic/gin" "github.com/wmms/wmms/internal/handler" "github.com/wmms/wmms/internal/repository" "github.com/wmms/wmms/pkg/database" ) func main() { dsn := os.Getenv("DB_DSN") if dsn == "" { dsn = "root:1234@tcp(localhost:3306)/wmms?charset=utf8mb4&parseTime=true" } err := database.Init(dsn) if err != nil { log.Fatalf("Failed to initialize database: %v", err) } defer database.Close() // Initialize users table and create default users if err := repository.InitUserTable(); err != nil { log.Fatalf("Failed to initialize users table: %v", err) } if err := repository.CreateDefaultUsers(); err != nil { log.Fatalf("Failed to create default users: %v", err) } // Initialize applications table appRepo := repository.NewApplicationRepository() if err := appRepo.InitApplicationTable(); err != nil { log.Fatalf("Failed to initialize applications table: %v", err) } r := gin.Default() // Serve Vue build output r.Static("/web", "./frontend/dist") // Serve uploaded files r.Static("/uploads", "./uploads") // Serve index.html at root r.GET("/", func(c *gin.Context) { c.File("./frontend/dist/index.html") }) h := handler.NewHandler() h.RegisterRoutes(r) // WebSocket route r.GET("/ws", handler.HandleWebSocket) log.Println("Server starting on :8082") log.Println("Default users: admin/admin123, user/user123") if err := r.Run(":8082"); err != nil { log.Fatalf("Failed to start server: %v", err) } }