// Package core 提供核心应用协调功能 // 负责初始化和协调API、任务执行器和存储等核心组件 // 管理整个应用的生命周期 package core import ( "fmt" "log" "git.huangwc.com/pig/pig-farm-controller/internal/config" "git.huangwc.com/pig/pig-farm-controller/internal/storage/db" ) // Application 代表核心应用结构 // 协调API、任务执行器和存储组件的工作 type Application struct { // Storage 存储组件实例 Storage db.Storage // Config 应用配置 Config *config.Config } // 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) return &Application{ Storage: store, Config: cfg, } } // Start 启动核心应用 // 按正确顺序启动所有核心组件 func (app *Application) Start() error { // 启动存储组件 if err := app.Storage.Connect(); err != nil { return fmt.Errorf("failed to connect to storage: %v", err) } log.Println("Storage connected successfully") // TODO: 启动其他核心组件 return nil } // Stop 停止核心应用 // 按正确顺序停止所有核心组件 func (app *Application) Stop() error { // 停止存储组件 if err := app.Storage.Disconnect(); err != nil { return fmt.Errorf("failed to disconnect from storage: %v", err) } log.Println("Storage disconnected successfully") // TODO: 停止其他核心组件 return nil }