|
- 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)
- }
|