Skip to content
Snippets Groups Projects
Select Git revision
  • 2a6642c8512a067c96050fed94afd75a6b38bb71
  • master default protected
  • refactor/PRXS-3053-Files
  • feature/PRXS-3143-3235-ReferenceOptions
  • feature/PRXS-3421-ImplementNewRefAPI
  • feature/PRXS-3143-LimitReferenceFields
  • feature/PRXS-3234-FeaturePruneIdents
  • feature/3149-LocaleCodeAsID-Feature
  • feature/PRXS-3383-CollectionsRankSortAPI
  • PRXS-3421-RecursiveReferences
  • feature/PRXS-3383-CollectionsSort
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

action_handler.go

Blame
  • service.go 4.13 KiB
    package spaces
    
    import (
    	"context"
    
    	"github.com/pkg/errors"
    )
    
    // @microgen grpc
    // @protobuf git.perx.ru/perxis/perxis-go/proto/spaces
    // @grpc-addr content.spaces.Spaces
    type Spaces interface {
    	// Create - создает пространство для размещения контента
    	// В процессе создание пространства выполняются следующие шаги:
    	// 1. Создается запись о пространстве
    	// 2. Создается БД пространства
    	// 3. Создается master окружение
    	// 4. Создаются необходимые схема согласно указанной конфигурации
    	// 5. Выполняется копирование данных согласно указанной конфигурации
    	// Шаги могут выполняться в отложенном режиме, при этом пространство может быть недоступно для
    	// выполнения любых операций. Попытка обращения к пространству будет сопровождаться ошибкой
    	// ErrUnavailable
    
    	Create(ctx context.Context, space *Space) (created *Space, err error)
    	Get(ctx context.Context, spaceId string) (space *Space, err error)
    	List(ctx context.Context, orgId string) (spaces []*Space, err error)
    	Update(ctx context.Context, space *Space) (err error)
    	UpdateConfig(ctx context.Context, spaceId string, config *Config) (err error)
    	Delete(ctx context.Context, spaceId string) (err error)
    
    	// Transfer устанавливает для пространства значение поля RequestedMoveTo. После этого пространство
    	// будет отображаться в списке входящих запросов на перемещение в организации `orgID` (запрос ListIncoming)
    	// С пространством можно продолжать работу в текущей организации, пока запрос на перемещение не будет
    	// принят в целевой организации
    	// Перенос может быть инициирован только владельцем организации, которой принадлежит пространство
    	Transfer(ctx context.Context, spaceID, transferToOrg string) (err error)
    
    	// AbortTransfer - отменить перемещение пространства в другую организацию. Может быть вызван как
    	// владельцем пространства-инициатора, там и владельцем принимающего пространства
    	AbortTransfer(ctx context.Context, spaceID string) (err error)
    
    	// ListTransfers возвращает список пространств, перемещение которых было запрошено в текущую организацию
    	ListTransfers(ctx context.Context, orgID string) (spaces []*Space, err error)
    
    	// Move - перенести пространство в организацию, установленную в Space.TransferToOrg. Пространство переносится со
    	// всеми входящими в него данными: ролями, участниками, контентом, пр. и более не будет доступно в
    	// исходной организации.
    	// В случае, если запрос осуществляется с системным уровнем доступа и передан параметр `orgID`, то перенос будет
    	// осуществлен вне зависимости от того, был он инициирован через метод `Transfer` или нет
    	Move(ctx context.Context, spaceID, orgID string) (err error)
    }
    
    func IsSpaceAvailable(ctx context.Context, spcs Spaces, spaceId string) error {
    	spc, err := spcs.Get(ctx, spaceId)
    
    	if err != nil {
    		return errors.Wrap(err, "space not available")
    	}
    
    	if spc.StateInfo != nil && spc.StateInfo.State != StateReady {
    		return errors.New("space not available")
    	}
    
    	return nil
    }