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) } }