diff --git a/pkg/spaces/service.go b/pkg/spaces/service.go index e8baf1851b57f8ed95fda4f2467489c053cf4a78..249221692684110e96c62fce37d70fc650d06945 100644 --- a/pkg/spaces/service.go +++ b/pkg/spaces/service.go @@ -2,6 +2,7 @@ package spaces import ( "context" + "slices" "time" "git.perx.ru/perxis/perxis-go/pkg/errors" @@ -71,10 +72,10 @@ func IsSpaceAvailable(ctx context.Context, svc Spaces, spaceID string) error { if err != nil { return errors.Wrap(err, "fail to get space") } - if sp.StateInfo == nil || sp.StateInfo != nil && (sp.StateInfo.State == StateNew || sp.StateInfo.State == StateReady) { + if sp.StateInfo == nil || slices.Contains(WriteAllowedStates, sp.StateInfo.State) { return nil } - return ErrSpaceNotAvailable + return errors.WithContext(ErrSpaceNotAvailable, "state", sp.StateInfo.State) } func IsSpaceReadable(ctx context.Context, svc Spaces, spaceID string) error { @@ -82,7 +83,7 @@ func IsSpaceReadable(ctx context.Context, svc Spaces, spaceID string) error { if err != nil { return errors.Wrap(err, "fail to get space") } - if sp.StateInfo == nil || sp.StateInfo != nil && sp.StateInfo.State == StateNew || sp.StateInfo.State == StateReady || sp.StateInfo.State == StateMigration { + if sp.StateInfo == nil || slices.Contains(ReadAllowedStates, sp.StateInfo.State) { return nil } return errors.WithContext(ErrSpaceNotAvailable, "state", sp.StateInfo.State) diff --git a/pkg/spaces/space.go b/pkg/spaces/space.go index 985cd6c5356b3e519bbcf5a3264ee5ab42053131..baa44124b6830aa8c4f666f0300661952eadbc9d 100644 --- a/pkg/spaces/space.go +++ b/pkg/spaces/space.go @@ -46,6 +46,20 @@ func (s State) String() string { } } +var ( + ReadAllowedStates = []State{ + StateNew, + StateReady, + StateMigrationScheduled, + StateMigration, + } + + WriteAllowedStates = []State{ + StateNew, + StateReady, + } +) + type Config struct { Features []string // Deprecated Возможности используемые пространством }