mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 17:46:45 +00:00
65 lines
2.2 KiB
TypeScript
65 lines
2.2 KiB
TypeScript
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers';
|
|
import config from '@/config';
|
|
import { StatisticsNames } from '@db/entities/WorkflowStatistics';
|
|
|
|
export class RemoveWorkflowDataLoadedFlag1671726148420 implements MigrationInterface {
|
|
name = 'RemoveWorkflowDataLoadedFlag1671726148420';
|
|
|
|
async up(queryRunner: QueryRunner) {
|
|
logMigrationStart(this.name);
|
|
const tablePrefix = config.getEnv('database.tablePrefix');
|
|
|
|
// If any existing workflow has dataLoaded set to true, insert the relevant information to the statistics table
|
|
const workflowIds: Array<{ id: number; dataLoaded: boolean }> = await queryRunner.query(`
|
|
SELECT id, dataLoaded
|
|
FROM ${tablePrefix}workflow_entity
|
|
`);
|
|
|
|
workflowIds.map(({ id, dataLoaded }) => {
|
|
if (dataLoaded) {
|
|
const [insertQuery, insertParams] = queryRunner.connection.driver.escapeQueryWithParameters(
|
|
`
|
|
INSERT INTO ${tablePrefix}workflow_statistics (workflowId, name, count, latestEvent) VALUES
|
|
(:id, :name, 1, CURRENT_TIMESTAMP(3))
|
|
`,
|
|
{ id, name: StatisticsNames.dataLoaded },
|
|
{},
|
|
);
|
|
|
|
return queryRunner.query(insertQuery, insertParams);
|
|
}
|
|
return undefined;
|
|
});
|
|
|
|
await queryRunner.query(`ALTER TABLE ${tablePrefix}workflow_entity DROP COLUMN dataLoaded`);
|
|
|
|
logMigrationEnd(this.name);
|
|
}
|
|
|
|
async down(queryRunner: QueryRunner) {
|
|
const tablePrefix = config.getEnv('database.tablePrefix');
|
|
|
|
await queryRunner.query(
|
|
`ALTER TABLE ${tablePrefix}workflow_entity ADD COLUMN dataLoaded BOOLEAN DEFAULT false`,
|
|
);
|
|
|
|
// Search through statistics for any workflows that have the dataLoaded stat
|
|
const workflowsIds: Array<{ workflowId: string }> = await queryRunner.query(`
|
|
SELECT workflowId
|
|
FROM ${tablePrefix}workflow_statistics
|
|
WHERE name = '${StatisticsNames.dataLoaded}'
|
|
`);
|
|
workflowsIds.map(({ workflowId }) => {
|
|
return queryRunner.query(`
|
|
UPDATE ${tablePrefix}workflow_entity
|
|
SET dataLoaded = true
|
|
WHERE id = '${workflowId}'`);
|
|
});
|
|
|
|
await queryRunner.query(
|
|
`DELETE FROM ${tablePrefix}workflow_statistics WHERE name = '${StatisticsNames.dataLoaded}'`,
|
|
);
|
|
}
|
|
}
|