package engine import ( "fmt" "robotfs/store/redis_lua" "robotfs/utils" ) type Engine struct { metadataManager *MetaDataManager storageManager *StorageManager } func NewEngine() *Engine { return &Engine{} } func (e *Engine) Start() error { store := redis_lua.NewRedisLuaStore() if err := store.Initialize(utils.GetViper(), "redis."); err != nil { return fmt.Errorf("failed to initialize meta store: %v", err) } metadata, err := NewMetaDataManager(store) if err != nil { return fmt.Errorf("failed to create metadata manager: %v", err) } e.metadataManager = metadata s3Config, err := Initialize(utils.GetViper(), "s3.") if err != nil { return fmt.Errorf("failed to initialize s3 config: %v", err) } storageManager, err := NewStorageManager(s3Config) if err != nil { return fmt.Errorf("failed to create storage manager: %v", err) } e.storageManager = storageManager return nil } func (e *Engine) Stop() { if e.metadataManager != nil { e.metadataManager.Shutdown() } }