// 像素游戏厅后端入口:加载配置 → 连接数据库 → 启动 HTTP/WebSocket 服务 package main import ( "fmt" "log" "nl-game-api-gin/internal/config" "nl-game-api-gin/internal/database" "nl-game-api-gin/internal/router" ) func main() { // 加载 config.yaml(端口、数据库、JWT、AI Key) if err := config.Load("config.yaml"); err != nil { log.Fatalln("配置加载失败:", err) } // 初始化 MySQL 连接 if err := database.Init(); err != nil { log.Fatalln("数据库初始化失败:", err) } // 仅开发模式(go run 启动)自动补建缺失的表; // go build 打包后的二进制绝不迁移,生产库结构变更一律手动执行 sql/ 脚本 if database.IsDevRun() { if err := database.AutoMigrateMissing(); err != nil { log.Fatalln("dev 自动建表失败:", err) } } else { log.Println("生产模式:跳过表结构迁移(结构变更请手动执行 sql/ 脚本)") } // 启动服务 engine := router.Setup() addr := fmt.Sprintf(":%d", config.C.Server.Port) log.Println("后端服务已启动,监听", addr) if err := engine.Run(addr); err != nil { log.Fatalln("服务启动失败:", err) } }