package reqbuilder import ( "strconv" "gitlink.org.cn/cloudream/jcs-pub/client/internal/publock/lockprovider" "gitlink.org.cn/cloudream/jcs-pub/client/internal/publock/types" jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types" ) type UserSpaceLockReqBuilder[T any] struct { *LockRequestBuilder[T] } func (b *LockRequestBuilder[T]) UserSpace() *UserSpaceLockReqBuilder[T] { return &UserSpaceLockReqBuilder[T]{LockRequestBuilder: b} } func (b *UserSpaceLockReqBuilder[T]) Buzy(spaceID jcstypes.UserSpaceID) *UserSpaceLockReqBuilder[T] { b.Locks = append(b.Locks, types.Lock{ Path: b.makePath(spaceID), Name: lockprovider.UserSpaceBuzyLock, Target: lockprovider.NewEmptyTarget(), }) return b } func (b *UserSpaceLockReqBuilder[T]) GC(spaceID jcstypes.UserSpaceID) *UserSpaceLockReqBuilder[T] { b.Locks = append(b.Locks, types.Lock{ Path: b.makePath(spaceID), Name: lockprovider.UserSpaceGCLock, Target: lockprovider.NewEmptyTarget(), }) return b } func (b *UserSpaceLockReqBuilder[T]) makePath(hubID jcstypes.UserSpaceID) []string { return []string{lockprovider.UserSpaceLockPathPrefix, strconv.FormatInt(int64(hubID), 10)} }