package driver import ( "net/url" "forge.cadoles.com/arcad/edge/pkg/storage/share" "github.com/pkg/errors" ) var shareStoreFactories = make(map[string]ShareStoreFactory, 0) type ShareStoreFactory func(url *url.URL) (share.Store, error) func RegisterShareStoreFactory(scheme string, factory ShareStoreFactory) { shareStoreFactories[scheme] = factory } func NewShareStore(dsn string) (share.Store, error) { url, err := url.Parse(dsn) if err != nil { return nil, errors.WithStack(err) } factory, exists := shareStoreFactories[url.Scheme] if !exists { return nil, errors.WithStack(ErrSchemeNotRegistered) } store, err := factory(url) if err != nil { return nil, errors.WithStack(err) } return store, nil }