From ca3cf02396c7fb84b97c336d138ae8b377fc73a5 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Mon, 8 Sep 2025 17:00:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E4=B8=BAnil=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/core/application.go | 80 ++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 44 deletions(-) diff --git a/internal/core/application.go b/internal/core/application.go index a9a5228..aacc36d 100644 --- a/internal/core/application.go +++ b/internal/core/application.go @@ -52,63 +52,55 @@ type Application struct { // NewApplication 创建并返回一个新的核心应用实例 // 初始化所有核心组件 func NewApplication(cfg *config.Config) *Application { - // 从配置中获取数据库连接字符串 - connectionString := cfg.GetDatabaseConnectionString() - - // 从配置中获取连接池参数 - maxOpenConns := cfg.Database.MaxOpenConns - maxIdleConns := cfg.Database.MaxIdleConns - connMaxLifetime := cfg.Database.ConnMaxLifetime - - // 初始化存储组件 - store := db.NewStorage(connectionString, maxOpenConns, maxIdleConns, connMaxLifetime) - - // 初始化用户仓库 - userRepo := repository.NewUserRepo(store.GetDB()) - - // 初始化操作历史仓库 - operationHistoryRepo := repository.NewOperationHistoryRepo(store.GetDB()) - - // 初始化设备控制仓库 - deviceControlRepo := repository.NewDeviceControlRepo(store.GetDB()) - - // 初始化设备仓库 - deviceRepo := repository.NewDeviceRepo(store.GetDB()) - - // 初始化WebSocket服务 - websocketService := service.NewWebSocketService() - // 设置WebSocket超时时间 - websocketService.SetDefaultTimeout(cfg.GetWebSocketTimeout()) - - // 初始化API组件 - apiInstance := api.NewAPI(cfg, userRepo, operationHistoryRepo, deviceControlRepo, deviceRepo, websocketService) - - // 初始化任务执行器组件(使用5个工作协程) - taskExecutor := task.NewExecutor(5) - return &Application{ - Storage: store, - API: apiInstance, - TaskExecutor: taskExecutor, - UserRepo: userRepo, - OperationHistoryRepo: operationHistoryRepo, - DeviceControlRepo: deviceControlRepo, - DeviceRepo: deviceRepo, - WebSocketService: websocketService, - Config: cfg, - logger: logs.NewLogger(), + Config: cfg, + logger: logs.NewLogger(), } } // Start 启动核心应用 // 按正确顺序启动所有核心组件 func (app *Application) Start() error { + // 从配置中获取数据库连接字符串 + connectionString := app.Config.GetDatabaseConnectionString() + + // 从配置中获取连接池参数 + maxOpenConns := app.Config.Database.MaxOpenConns + maxIdleConns := app.Config.Database.MaxIdleConns + connMaxLifetime := app.Config.Database.ConnMaxLifetime + + // 初始化存储组件 + app.Storage = db.NewStorage(connectionString, maxOpenConns, maxIdleConns, connMaxLifetime) + // 启动存储组件 if err := app.Storage.Connect(); err != nil { return fmt.Errorf("存储连接失败: %v", err) } app.logger.Info("存储连接成功") + // 初始化用户仓库 + app.UserRepo = repository.NewUserRepo(app.Storage.GetDB()) + + // 初始化操作历史仓库 + app.OperationHistoryRepo = repository.NewOperationHistoryRepo(app.Storage.GetDB()) + + // 初始化设备控制仓库 + app.DeviceControlRepo = repository.NewDeviceControlRepo(app.Storage.GetDB()) + + // 初始化设备仓库 + app.DeviceRepo = repository.NewDeviceRepo(app.Storage.GetDB()) + + // 初始化WebSocket服务 + app.WebSocketService = service.NewWebSocketService() + // 设置WebSocket超时时间 + app.WebSocketService.SetDefaultTimeout(app.Config.GetWebSocketTimeout()) + + // 初始化API组件 + app.API = api.NewAPI(app.Config, app.UserRepo, app.OperationHistoryRepo, app.DeviceControlRepo, app.DeviceRepo, app.WebSocketService) + + // 初始化任务执行器组件(使用5个工作协程) + app.TaskExecutor = task.NewExecutor(5) + // 启动API组件 if err := app.API.Start(); err != nil { return fmt.Errorf("API启动失败: %v", err)