You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.5 KiB

1 month ago
package main
import (
"fmt"
"log"
"path/filepath"
"auroragolang/docs"
"auroragolang/internal/config"
"auroragolang/internal/domain/model"
"auroragolang/internal/infrastructure/database"
infraRepo "auroragolang/internal/infrastructure/repository"
httpInterface "auroragolang/internal/interface/http"
"auroragolang/internal/usecase"
"auroragolang/pkg/logger"
"gorm.io/gorm"
)
// @title Aurora Service API
// @version 1.0
// @description Aurora Golang 示例 REST API,基于 Gin + GORM。
// @BasePath /api/v1
func main() {
root := "."
cfg, err := config.LoadConfig(filepath.Join(root, "configs"))
if err != nil {
log.Fatalf("加载配置失败: %v", err)
}
appLogger := logger.New(cfg.App.Name)
docs.SwaggerInfo.Version = cfg.App.Env
docs.SwaggerInfo.BasePath = "/api/v1"
db, err := database.Connect(cfg.Database)
if err != nil {
appLogger.Fatalf("数据库连接失败: %v", err)
}
autoMigrate(db, appLogger)
userRepo := infraRepo.NewGormUserRepository(db)
userService := usecase.NewUserService(userRepo)
router := httpInterface.NewRouter(userService)
appLogger.Printf("服务启动: 端口 %d,环境 %s", cfg.App.Port, cfg.App.Env)
if err := router.Run(fmt.Sprintf(":%d", cfg.App.Port)); err != nil {
appLogger.Fatalf("服务器启动失败: %v", err)
}
}
func autoMigrate(db *gorm.DB, log *logger.Logger) {
if err := db.AutoMigrate(&model.User{}); err != nil {
log.Fatalf("自动迁移失败: %v", err)
}
}