50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"log"
|
||
"ly.system.api/config"
|
||
"ly.system.api/container"
|
||
"ly.system.api/routes"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
"gorm.io/driver/postgres"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
func main() {
|
||
// 加载配置
|
||
if _, err := config.LoadConfig(); err != nil {
|
||
log.Fatalf("failed to load config: %v", err)
|
||
}
|
||
|
||
// 初始化PostgreSQL数据库
|
||
db, err := gorm.Open(postgres.Open(config.LoadDBConfig()), &gorm.Config{})
|
||
if err != nil {
|
||
log.Fatalf("failed to connect database: %v", err)
|
||
}
|
||
|
||
// 初始化容器
|
||
ctn := container.NewContainer(db)
|
||
|
||
// 自动迁移数据库
|
||
if err := ctn.Migrate(); err != nil {
|
||
log.Fatalf("failed to migrate database: %v", err)
|
||
}
|
||
|
||
// 创建Gin路由
|
||
router := gin.Default()
|
||
|
||
// 信任所有代理(用于正确处理X-Forwarded-For等头信息)
|
||
router.SetTrustedProxies([]string{"0.0.0.0/0", "::/0"})
|
||
|
||
// 设置路由
|
||
routes.SetupRoutes(router, ctn)
|
||
|
||
// 启动服务
|
||
port := config.AppConfig.Server.Port
|
||
if err := router.Run(fmt.Sprintf(":%d", port)); err != nil {
|
||
log.Fatalf("服务启动失败: %v", err)
|
||
}
|
||
}
|