64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|