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