package bootstrap import ( pkgGorm "github.com/break/junhong_cmp_fiber/pkg/gorm" ) // BootstrapResult Bootstrap 初始化结果 type BootstrapResult struct { Handlers *Handlers Middlewares *Middlewares } // Bootstrap 初始化所有业务组件并返回 Handlers 和 Middlewares // 这是应用启动时的主入口,负责编排所有组件的初始化流程 // // 初始化顺序: // 1. 初始化 Store 层(数据访问) // 2. 注册 GORM Callbacks(数据权限过滤等)- 需要 AccountStore // 3. 初始化 Service 层(业务逻辑) // 4. 初始化 Middleware 层(中间件) // 5. 初始化 Handler 层(HTTP 处理) // // 参数: // - deps: 基础依赖(DB, Redis, Logger) // // 返回: // - *BootstrapResult: 包含 Handlers 和 Middlewares // - error: 初始化错误 func Bootstrap(deps *Dependencies) (*BootstrapResult, error) { // 1. 初始化 Store 层 stores := initStores(deps) // 2. 注册 GORM Callbacks(需要 AccountStore 来查询下级 ID) if err := registerGORMCallbacks(deps, stores); err != nil { return nil, err } // 3. 初始化 Service 层 services := initServices(stores, deps) // 4. 初始化 Middleware 层 middlewares := initMiddlewares(deps) // 5. 初始化 Handler 层 handlers := initHandlers(services, deps) return &BootstrapResult{ Handlers: handlers, Middlewares: middlewares, }, nil } // registerGORMCallbacks 注册 GORM Callbacks func registerGORMCallbacks(deps *Dependencies, stores *stores) error { // 注册数据权限过滤 Callback(使用 ShopStore 来查询下级店铺 ID) if err := pkgGorm.RegisterDataPermissionCallback(deps.DB, stores.Shop); err != nil { return err } // 注册自动添加创建&更新人 Callback if err := pkgGorm.RegisterSetCreatorUpdaterCallback(deps.DB); err != nil { return err } // TODO: 在此添加其他 GORM Callbacks return nil }