application增加API的初始化

This commit is contained in:
2025-09-12 14:58:07 +08:00
parent 41bbe69442
commit 8f9bbca22b
2 changed files with 27 additions and 5 deletions

View File

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

View File

@@ -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 代表服务器配置