2022-12-09 14:53:42 +00:00
|
|
|
import { AppEnvironment } from 'src/entities/app_environments.entity';
|
|
|
|
|
import { AppVersion } from 'src/entities/app_version.entity';
|
|
|
|
|
import { DataSourceOptions } from 'src/entities/data_source_options.entity';
|
|
|
|
|
import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm';
|
|
|
|
|
import { AppsService } from '@services/apps.service';
|
|
|
|
|
import { DataSourcesService } from '@services/data_sources.service';
|
|
|
|
|
import { defaultAppEnvironments } from 'src/helpers/utils.helper';
|
|
|
|
|
import { NestFactory } from '@nestjs/core';
|
|
|
|
|
import { AppModule } from 'src/app.module';
|
|
|
|
|
|
|
|
|
|
export class moveDataSourceOptionsToEnvironment1669054493160 implements MigrationInterface {
|
2023-01-02 08:42:07 +00:00
|
|
|
private nestApp;
|
|
|
|
|
|
2022-12-09 14:53:42 +00:00
|
|
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
|
|
|
// Create default environment for all apps
|
2023-01-02 08:42:07 +00:00
|
|
|
this.nestApp = await NestFactory.createApplicationContext(AppModule);
|
2022-12-09 14:53:42 +00:00
|
|
|
const entityManager = queryRunner.manager;
|
2023-01-02 08:42:07 +00:00
|
|
|
const appVersions = await entityManager.find(AppVersion);
|
|
|
|
|
if (appVersions?.length) {
|
|
|
|
|
for (const appVersion of appVersions) {
|
|
|
|
|
await this.associateDataQueriesAndSources(entityManager, appVersion);
|
|
|
|
|
}
|
2022-12-09 14:53:42 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-13 22:01:00 +00:00
|
|
|
private async associateDataQueriesAndSources(entityManager: EntityManager, appVersion: AppVersion) {
|
2023-01-02 08:42:07 +00:00
|
|
|
const dataSourcesService = this.nestApp.get(DataSourcesService);
|
|
|
|
|
const appsService = this.nestApp.get(AppsService);
|
2022-12-09 14:53:42 +00:00
|
|
|
|
2023-01-02 08:42:07 +00:00
|
|
|
for (const { name, isDefault } of defaultAppEnvironments) {
|
|
|
|
|
const environment: AppEnvironment = await entityManager.save(
|
|
|
|
|
entityManager.create(AppEnvironment, {
|
|
|
|
|
name,
|
|
|
|
|
isDefault,
|
|
|
|
|
appVersionId: appVersion.id,
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
// Get all data sources under app
|
|
|
|
|
const dataSources = await entityManager.query('select * from data_sources where app_id = $1', [appVersion.appId]);
|
|
|
|
|
|
|
|
|
|
if (dataSources?.length) {
|
|
|
|
|
for (const dataSource of dataSources) {
|
|
|
|
|
const convertedOptions = appsService.convertToArrayOfKeyValuePairs(dataSource.options);
|
|
|
|
|
const options = !environment.isDefault
|
|
|
|
|
? await dataSourcesService.parseOptionsForCreate(convertedOptions, true, entityManager)
|
|
|
|
|
: dataSource.options;
|
|
|
|
|
await entityManager.save(
|
|
|
|
|
entityManager.create(DataSourceOptions, {
|
|
|
|
|
dataSourceId: dataSource.id,
|
|
|
|
|
environmentId: environment.id,
|
|
|
|
|
options,
|
2022-12-09 14:53:42 +00:00
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
}
|
2023-01-02 08:42:07 +00:00
|
|
|
}
|
|
|
|
|
}
|
2022-12-09 14:53:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async down(queryRunner: QueryRunner): Promise<void> {}
|
|
|
|
|
}
|