44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import type { MigrationContext, ReversibleMigration } from '@db/types';
|
|
|
|
export class DeleteExecutionsWithWorkflows1673268682475 implements ReversibleMigration {
|
|
async up({ queryRunner, tablePrefix }: MigrationContext) {
|
|
await queryRunner.query(
|
|
`ALTER TABLE ${tablePrefix}execution_entity
|
|
ALTER COLUMN "workflowId" TYPE INTEGER USING "workflowId"::integer`,
|
|
);
|
|
|
|
const workflowIds = (await queryRunner.query(`
|
|
SELECT id FROM ${tablePrefix}workflow_entity
|
|
`)) as Array<{ id: number }>;
|
|
|
|
await queryRunner.query(
|
|
`DELETE FROM ${tablePrefix}execution_entity
|
|
WHERE "workflowId" IS NOT NULL
|
|
${
|
|
workflowIds.length
|
|
? `AND "workflowId" NOT IN (${workflowIds.map(({ id }) => id).join()})`
|
|
: ''
|
|
}`,
|
|
);
|
|
|
|
await queryRunner.query(
|
|
`ALTER TABLE ${tablePrefix}execution_entity
|
|
ADD CONSTRAINT "FK_${tablePrefix}execution_entity_workflowId"
|
|
FOREIGN KEY ("workflowId") REFERENCES ${tablePrefix}workflow_entity ("id")
|
|
ON DELETE CASCADE`,
|
|
);
|
|
}
|
|
|
|
async down({ queryRunner, tablePrefix }: MigrationContext) {
|
|
await queryRunner.query(
|
|
`ALTER TABLE ${tablePrefix}execution_entity
|
|
DROP CONSTRAINT "FK_${tablePrefix}execution_entity_workflowId"`,
|
|
);
|
|
|
|
await queryRunner.query(
|
|
`ALTER TABLE ${tablePrefix}execution_entity
|
|
ALTER COLUMN "workflowId" TYPE TEXT`,
|
|
);
|
|
}
|
|
}
|