ToolJet/server/data-migrations/1686826460358-BackFillAppEnvironmentsPriorityColumn.ts
Muhsin Shah C P 4331b40869
[Improvements] Environment changes (#6762)
* Added priority, enabled, current_environment_id columns
- added data-migrations to backfill the priority and current environment id for each version

* working on multi environments improvement
- added checks for promoted env
- promote env feature
- released app & production env check
- promoted version definition check

* added import support

* working on migration issues

* fixed failing migration

* fixed failing migration once again

* Fixed possible bugs
- seed
- test case helpers
- app version release

* fixed migration bug

* working on migration progress

* working on migration progress class

* added migration progress

* fixed unit tests

* fixed e2e cases

* added default priority

* added PR changes

* changed import logic

* added global datasource design and api changes

* changed default env if the id is null

* added unique constraint and a bug fix

* changed app versions api
- added current environment id to the where conditions

* fixed failing test cases

* added new test cases

* added new api changes

* added back the enabled check

* fixed test case

* change: added environment to create versions dto

* typo: environmentId

* added new api for fetching versions

* added appVersions count changes to CE

* Changed app versions by environmentid logic

* added PR changes for EE

* fixed wrong promoted env id issue

* fix: can't switch to staging

* added import export changes
- update delete modal text

* added EE import export code, modal updated text

* added common migration code for CE and EE

* fixes
- enable run button for released version
- disable change datasource for queries

* changed released version popup design to new EE design

* add: hide delete icons for released version
2023-07-11 10:10:03 +05:30

45 lines
1.7 KiB
TypeScript

import { Organization } from 'src/entities/organization.entity';
import { defaultAppEnvironments, MigrationProgress } from 'src/helpers/utils.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');
}
}