39 lines
1.2 KiB
Go
39 lines
1.2 KiB
Go
|
|
// 像素游戏厅后端入口:加载配置 → 连接数据库 → 启动 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)
|
|||
|
|
}
|
|||
|
|
}
|