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