material_manage_system/cmd/server/main.go

67 lines
1.6 KiB
Go

package main
import (
"log"
"os"
"path/filepath"
"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()
registerFrontendRoutes(r, "./frontend/dist")
// Serve uploaded files
r.Static("/uploads", "./uploads")
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)
}
}
func registerFrontendRoutes(r *gin.Engine, distDir string) {
r.Static("/web", distDir)
r.Static("/assets", filepath.Join(distDir, "assets"))
r.GET("/", func(c *gin.Context) {
c.File(filepath.Join(distDir, "index.html"))
})
}