package bootstrap import ( "github.com/hibiken/asynq" "github.com/redis/go-redis/v9" "go.uber.org/zap" "gorm.io/gorm" "github.com/break/junhong_cmp_fiber/internal/gateway" "github.com/break/junhong_cmp_fiber/pkg/queue" "github.com/break/junhong_cmp_fiber/pkg/storage" ) // WorkerDependencies Worker 进程的基础依赖 type WorkerDependencies struct { DB *gorm.DB Redis *redis.Client Logger *zap.Logger AsynqClient *asynq.Client // Worker 特有:用于 Scheduler 提交任务 StorageService *storage.Service // 对象存储(可选) GatewayClient *gateway.Client // Gateway 客户端(可选) } // WorkerBootstrapResult Worker Bootstrap 初始化结果 type WorkerBootstrapResult = queue.WorkerBootstrapResult // WorkerStores 导出的 Worker Store 集合 type WorkerStores = queue.WorkerStores // WorkerServices 导出的 Worker 服务集合 type WorkerServices = queue.WorkerServices // BootstrapWorker 初始化 Worker 进程的所有组件 // // 初始化顺序: // 1. 初始化 Worker Store 层(数据访问) // 2. 初始化 Worker Service 层(业务逻辑) // // 参数: // - deps: Worker 基础依赖(DB, Redis, Logger, AsynqClient, StorageService, GatewayClient) // // 返回: // - *WorkerBootstrapResult: 包含 Stores 和 Services // - error: 初始化错误 func BootstrapWorker(deps *WorkerDependencies) (*WorkerBootstrapResult, error) { // 1. 初始化 Worker Store 层 stores := initWorkerStores(deps) // 2. 初始化 Worker Service 层 services := initWorkerServices(stores, deps) return &WorkerBootstrapResult{ Stores: stores, Services: services, }, nil }