Introduce SUSPENDED Activation Status (#9609)

We are introducing a new workspace activationStatus "SUSPENDED". This
status represents a workspace which is SUSPENDED (either manually by the
admin or in case if IS_BILLING_ENABLED if the subscription is unpaid |
canceled | paused).

We will keep making sure these workspaces are healthy but prevent the
user from using it (they will be redirected to the billing page)
This commit is contained in:
Charles Bochet
2025-01-14 14:52:45 +01:00
committed by GitHub
parent c9b91dcfaa
commit 508feb4e7e
2 changed files with 51 additions and 0 deletions

View File

@ -0,0 +1,49 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
export class UpdateWorkspaceStatusEnum1736861823893
implements MigrationInterface
{
name = 'UpdateWorkspaceStatusEnum1736861823893';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TYPE "core"."workspace_activationstatus_enum" RENAME TO "workspace_activationstatus_enum_old"`,
);
await queryRunner.query(
`CREATE TYPE "core"."workspace_activationStatus_enum" AS ENUM('ONGOING_CREATION', 'PENDING_CREATION', 'ACTIVE', 'INACTIVE', 'SUSPENDED')`,
);
await queryRunner.query(
`ALTER TABLE "core"."workspace" ALTER COLUMN "activationStatus" DROP DEFAULT`,
);
await queryRunner.query(
`ALTER TABLE "core"."workspace" ALTER COLUMN "activationStatus" TYPE "core"."workspace_activationStatus_enum" USING "activationStatus"::"text"::"core"."workspace_activationStatus_enum"`,
);
await queryRunner.query(
`ALTER TABLE "core"."workspace" ALTER COLUMN "activationStatus" SET DEFAULT 'INACTIVE'`,
);
await queryRunner.query(
`DROP TYPE "core"."workspace_activationstatus_enum_old"`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TYPE "core"."workspace_activationstatus_enum_old" AS ENUM('ACTIVE', 'INACTIVE', 'ONGOING_CREATION', 'PENDING_CREATION')`,
);
await queryRunner.query(
`ALTER TABLE "core"."workspace" ALTER COLUMN "activationStatus" DROP DEFAULT`,
);
await queryRunner.query(
`ALTER TABLE "core"."workspace" ALTER COLUMN "activationStatus" TYPE "core"."workspace_activationstatus_enum_old" USING "activationStatus"::"text"::"core"."workspace_activationstatus_enum_old"`,
);
await queryRunner.query(
`ALTER TABLE "core"."workspace" ALTER COLUMN "activationStatus" SET DEFAULT 'INACTIVE'`,
);
await queryRunner.query(
`DROP TYPE "core"."workspace_activationStatus_enum"`,
);
await queryRunner.query(
`ALTER TYPE "core"."workspace_activationstatus_enum_old" RENAME TO "workspace_activationstatus_enum"`,
);
}
}

View File

@ -27,6 +27,7 @@ export enum WorkspaceActivationStatus {
PENDING_CREATION = 'PENDING_CREATION',
ACTIVE = 'ACTIVE',
INACTIVE = 'INACTIVE',
SUSPENDED = 'SUSPENDED',
}
registerEnumType(WorkspaceActivationStatus, {
@ -109,6 +110,7 @@ export class Workspace {
@Field(() => WorkspaceActivationStatus)
@Column({
type: 'enum',
enumName: 'workspace_activationStatus_enum',
enum: WorkspaceActivationStatus,
default: WorkspaceActivationStatus.INACTIVE,
})