application增加API的初始化
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
// Package core 提供了应用的核心结构和生命周期管理。
|
||||
package core
|
||||
|
||||
import (
|
||||
@@ -7,9 +6,13 @@ import (
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/api"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/token"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/config"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/database"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/task"
|
||||
)
|
||||
|
||||
@@ -19,6 +22,7 @@ type Application struct {
|
||||
Logger *logs.Logger
|
||||
Storage database.Storage
|
||||
Executor *task.Executor
|
||||
API *api.API // 添加 API 对象
|
||||
}
|
||||
|
||||
// NewApplication 创建并初始化一个新的 Application 实例。
|
||||
@@ -42,12 +46,22 @@ func NewApplication(configPath string) (*Application, error) {
|
||||
// 4. 初始化任务执行器
|
||||
executor := task.NewExecutor(cfg.Heartbeat.Concurrency, logger)
|
||||
|
||||
// 5. 组装 Application 对象
|
||||
// 5. 初始化用户仓库
|
||||
userRepo := repository.NewGormUserRepository(storage.GetDB())
|
||||
|
||||
// 6. 初始化 Token 服务
|
||||
tokenService := token.NewTokenService([]byte(cfg.App.JWTSecret))
|
||||
|
||||
// 7. 初始化 API 服务器
|
||||
apiServer := api.NewAPI(cfg.Server, logger, userRepo, tokenService)
|
||||
|
||||
// 8. 组装 Application 对象
|
||||
app := &Application{
|
||||
Config: cfg,
|
||||
Logger: logger,
|
||||
Storage: storage,
|
||||
Executor: executor,
|
||||
API: apiServer,
|
||||
}
|
||||
|
||||
return app, nil
|
||||
@@ -60,6 +74,9 @@ func (app *Application) Start() error {
|
||||
// 启动任务执行器
|
||||
app.Executor.Start()
|
||||
|
||||
// 启动 API 服务器
|
||||
app.API.Start()
|
||||
|
||||
// 等待关闭信号
|
||||
quit := make(chan os.Signal, 1)
|
||||
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||
@@ -73,6 +90,9 @@ func (app *Application) Start() error {
|
||||
func (app *Application) Stop() error {
|
||||
app.Logger.Info("应用关闭中...")
|
||||
|
||||
// 关闭 API 服务器
|
||||
app.API.Stop()
|
||||
|
||||
// 关闭任务执行器
|
||||
app.Executor.Stop()
|
||||
|
||||
@@ -98,7 +118,8 @@ func initStorage(cfg config.DatabaseConfig, logger *logs.Logger) (database.Stora
|
||||
}
|
||||
|
||||
// 执行数据库迁移
|
||||
var dbModels = []interface{}{ /* &User{}, &Product{} */ }
|
||||
// 这里需要添加所有需要自动迁移的模型
|
||||
var dbModels = []interface{}{&models.User{}}
|
||||
if err := storage.Migrate(dbModels...); err != nil {
|
||||
return nil, fmt.Errorf("数据库迁移失败: %w", err)
|
||||
}
|
||||
|
||||
@@ -33,8 +33,9 @@ type Config struct {
|
||||
|
||||
// AppConfig 代表应用基础配置
|
||||
type AppConfig struct {
|
||||
Name string `yaml:"name"`
|
||||
Version string `yaml:"version"`
|
||||
Name string `yaml:"name"`
|
||||
Version string `yaml:"version"`
|
||||
JWTSecret string `yaml:"jwt_secret"` // JWT 密钥
|
||||
}
|
||||
|
||||
// ServerConfig 代表服务器配置
|
||||
|
||||
Reference in New Issue
Block a user