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