Voedger Internals
  • Introduction
  • 💡Concepts
    • Event Sourcing & CQRS
    • Editions (deprecated)
      • Community Edition
      • Standart Edition
      • Standart Edition (v1)
  • 🚀Server
    • Overview (Server)
    • Design
      • Query Processor
      • API Gateway implementation
      • N1 Cluster
      • N3 Cluster
      • N5 Cluster
      • Orchestration
      • Sequences
      • Packages overview
        • sys
        • registry
    • Features
      • API Gateway
        • API v2
          • Conventions
            • API URL
            • HTTP methods and processors
            • Naming conventions
            • Query constraints
            • Error handling
          • Documents and records
            • Create document or record
            • Update document or record
            • Deactivate document or record
            • Read document or record
            • Read from CDoc collection
          • Queries
            • Read from query
          • Views
            • Read from view
          • Commands
            • Execute command
          • BLOBs
            • Create BLOB
            • Read BLOB
          • Temporary BLOBs
            • Create temporary BLOB
            • Read temporary BLOB
          • Schemas
            • List app workspaces
            • List workspace roles
            • Read workspace role schema
        • API v1
          • API Conventions
          • BLOBs
      • Admin Endpoint
      • Clusters
        • Bootstrap
        • Monitoring
        • Secure prometheus and grafana
        • Alerting
        • Maintenance
          • SELECT, UPDATE
      • VVMs
      • Applications
        • Deploy Application
        • Sidecar Applications
      • AuthNZ
        • Issue Principal Token
        • Refresh Principal Token
        • Enrich Principal Token
        • ACL Rules
        • Global Roles
      • Data types
        • Core types
        • Small integers
        • Uniques With Multiple Fields
        • Verifiable Fields
      • Workspaces
        • Create Workspace
        • Deactivate Workspace
        • See also (Workspaces)
      • Invites
        • Invite to Workspace
        • Join Workspace
        • Leave Workspace
        • Cancel sent Invite
        • Cancel accepted Invite
        • Update Invite roles
      • Users
        • Create a new user
        • Change user password
        • Send Email
        • Reset password
        • Change Email
      • Notifications
        • Heartbeats
      • Devices
        • Create a new device
        • Join device to workspace
      • Jobs
      • DMBS Drivers
        • AmazonDB Driver
      • Frozen
        • Ephemeral Storage
        • Storage Extensions
  • 🛠️Framework
    • Overview (Framework)
    • Features
      • vpm
      • vpm init
      • vpm tidy
      • vpm baseline
      • vpm orm
      • vpm build
      • API for testing
  • Development
    • Requirements Management
    • Requirements Management (Overview)
Powered by GitBook
On this page
  • Motivation
  • Principles
  • c.sys.InitiateDeactivateWorkspace()

Was this helpful?

Edit on GitHub
  1. 🚀Server
  2. Features
  3. Workspaces

Deactivate Workspace

PreviousCreate WorkspaceNextSee also (Workspaces)

Last updated 1 year ago

Was this helpful?

Motivation

Principles

  • Workspace with WorkspaceDescriptor.Status != Active accepts only System token. 403 forbidden otherwise

  • Workspace is (consistently) inactive if:

    • Workspace/WorkspaceDescriptor.Status == Inactive

    • There is no any active JoinedWorkspace record which refers to the Workspace

    • Note that Workspace.Subject records are still active

    • AppWorkspace/WorkspaceID[Workspace].IsActive == false

  • The following case is possible: cdoc.sys.WorkspaceID.IsActive == true but it is impossible to work there because cdoc.sys.WorkspaceDescriptor.Status != Active already. Consistency is gauranteed within a single partition only, here there are 2 different partitions

  • Deactivating a previously created workspaces is possible but nothing will be made on c.sys.OnJoinedWorkspaceDeactivated beacuse:

    • there was no sp.sys.WorkspaceIDIdx

    • there was no field view.sys.WorkspaceIDIdx.InvitingWorkspaceWSID

c.sys.InitiateDeactivateWorkspace()

  • AuthZ: role.sys.WorkspaceOwner

  • Params: none

  • cdoc.sys.WorkspaceID existence in appWS is checked by view.sys.WorkspaceIDIdx but there was no this view before. So need to check the existence of the link to cdoc.sys.WorkspaceID before checking cdoc.sys.WorkspaceID.IsActive

Deactivate Workspace