refactor(main): 重构主应用结构以提高模块化
- 将main.go中的初始化逻辑提取到新的app包中 - 创建bootstrap包来处理配置加载和数据库初始化 - 添加middleware包来管理CORS中间件 - 创建router包来处理路由配置 - 简化main函数,只保留应用启动逻辑 - 使用依赖注入模式组织服务和处理器
This commit is contained in:
50
memora-api/internal/app/app.go
Normal file
50
memora-api/internal/app/app.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"memora-api/internal/bootstrap"
|
||||
"memora-api/internal/handler"
|
||||
"memora-api/internal/router"
|
||||
"memora-api/internal/service"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type App struct {
|
||||
engine *gin.Engine
|
||||
addr string
|
||||
}
|
||||
|
||||
func New(configPath string) (*App, error) {
|
||||
cfg, err := bootstrap.LoadConfig(configPath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("加载配置失败: %w", err)
|
||||
}
|
||||
|
||||
db, err := bootstrap.InitDB(cfg)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("连接数据库失败: %w", err)
|
||||
}
|
||||
|
||||
if err := bootstrap.AutoMigrate(db); err != nil {
|
||||
return nil, fmt.Errorf("数据库迁移失败: %w", err)
|
||||
}
|
||||
|
||||
wordService := service.NewWordService(db)
|
||||
wordHandler := handler.NewWordHandler(wordService)
|
||||
engine := router.New(wordHandler)
|
||||
|
||||
return &App{
|
||||
engine: engine,
|
||||
addr: fmt.Sprintf("%s:%d", cfg.Server.Host, cfg.Server.Port),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (a *App) Run() error {
|
||||
return a.engine.Run(a.addr)
|
||||
}
|
||||
|
||||
func (a *App) Addr() string {
|
||||
return a.addr
|
||||
}
|
||||
Reference in New Issue
Block a user