mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-21 21:47:17 +00:00
46 lines
1.8 KiB
TypeScript
46 lines
1.8 KiB
TypeScript
import { Organization } from '@entities/organization.entity';
|
|
import { defaultAppEnvironments } from '@helpers/utils.helper';
|
|
import { MigrationProgress } from '@helpers/migration.helper';
|
|
import { EntityManager, MigrationInterface, QueryRunner, TableUnique } from 'typeorm';
|
|
|
|
export class BackFillAppEnvironmentsPriorityColumn1686826460358 implements MigrationInterface {
|
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
//backfill new columns
|
|
await this.backFillPriorityColumn(queryRunner.manager);
|
|
|
|
await queryRunner.createUniqueConstraint(
|
|
'app_environments',
|
|
new TableUnique({
|
|
name: 'unique_organization_id_priority',
|
|
columnNames: ['organization_id', 'priority'],
|
|
})
|
|
);
|
|
}
|
|
|
|
async backFillPriorityColumn(manager: EntityManager) {
|
|
const organizations = await manager
|
|
.createQueryBuilder(Organization, 'organizations')
|
|
.leftJoinAndSelect('organizations.appEnvironments', 'appEnvironments')
|
|
.getMany();
|
|
|
|
const migrationProgress = new MigrationProgress(
|
|
'BackFillAppEnvironmentsPriorityColumn1686826460358',
|
|
organizations.length
|
|
);
|
|
|
|
for (const { appEnvironments } of organizations) {
|
|
for (const appEnvironment of appEnvironments) {
|
|
console.log('Updating app environment =>', appEnvironment.id);
|
|
const priority = defaultAppEnvironments.find(
|
|
(defaultAppEnvironment) => defaultAppEnvironment.name === appEnvironment.name
|
|
).priority;
|
|
await manager.query('UPDATE app_environments SET priority = $1 WHERE id = $2;', [priority, appEnvironment.id]);
|
|
}
|
|
migrationProgress.show();
|
|
}
|
|
}
|
|
|
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.dropUniqueConstraint('app_environments', 'unique_organization_id_priority');
|
|
}
|
|
}
|