package pubshards import ( "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/factory/reg" stgtypes "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/types" jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types" ) func init() { reg.RegisterBuilder[*jcstypes.PubShardsType](newBuilder) } type builder struct { stgtypes.EmptyBuilder detail *jcstypes.UserSpaceDetail } func newBuilder(detail *jcstypes.UserSpaceDetail) stgtypes.StorageBuilder { return &builder{ detail: detail, } } func (b *builder) FeatureDesc() stgtypes.FeatureDesc { return stgtypes.FeatureDesc{} } func (b *builder) CreateShardStore(typeOnly bool) (stgtypes.ShardStore, error) { stgType := b.detail.UserSpace.Storage.(*jcstypes.PubShardsType) if typeOnly { return (*ShardStore)(nil), nil } return NewShardStore(b.detail, stgType) } func (b *builder) CreateBaseStore(typeOnly bool) (stgtypes.BaseStore, error) { stgType := b.detail.UserSpace.Storage.(*jcstypes.PubShardsType) newDeatil := jcstypes.UserSpaceDetail{ UserID: b.detail.UserID, UserSpace: jcstypes.UserSpace{ Storage: stgType.Base, Credential: b.detail.UserSpace.Credential, ShardStore: b.detail.UserSpace.ShardStore, Features: b.detail.UserSpace.Features, WorkingDir: b.detail.UserSpace.WorkingDir, }, RecommendHub: b.detail.RecommendHub, } blder := reg.GetBuilderInternal(&newDeatil) return blder.CreateBaseStore(typeOnly) }