package storage import ( "context" "fmt" ) // Factory 按配置构造存储引擎。由 go-storage 提供 New* 实现后接入。 // 这里提供注册表模式:各引擎实现注册自己的构造函数,main.go 按名称选择。 type Factory func(ctx context.Context) (Storage, error) var registry = map[string]Factory{} // RegisterEngine 注册引擎构造函数(init 时调用,名称:local|s3|webdav)。 func RegisterEngine(name string, f Factory) { registry[name] = f } // NewEngine 按名称构造引擎。 func NewEngine(ctx context.Context, name string) (Storage, error) { f, ok := registry[name] if !ok { return nil, fmt.Errorf("storage: 未知存储引擎 %q(仅支持 local|s3|webdav)", name) } return f(ctx) }