ToolJet/server/data-migrations/1716551121164-addSMTPConfigsToTable.ts

70 lines
2.5 KiB
TypeScript
Raw Normal View History

2025-02-25 06:52:50 +00:00
import { InstanceSettings } from '@entities/instance_settings.entity';
import { MigrationInterface, QueryRunner } from 'typeorm';
import {
INSTANCE_SETTINGS_ENCRYPTION_KEY,
INSTANCE_SETTINGS_TYPE,
INSTANCE_SYSTEM_SETTINGS,
} from '@modules/instance-settings/constants';
2025-08-03 07:09:18 +00:00
import { NestFactory } from '@nestjs/core';
import { getImportPath, TOOLJET_EDITIONS } from '@modules/app/constants';
import { getTooljetEdition } from '@helpers/utils.helper';
import { AppModule } from '@modules/app/module';
2025-02-25 06:52:50 +00:00
export class addSMTPConfigsToTable1716551121164 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
2025-08-03 07:09:18 +00:00
const edition: TOOLJET_EDITIONS = getTooljetEdition() as TOOLJET_EDITIONS;
const nestApp = await NestFactory.createApplicationContext(await AppModule.register({ IS_GET_CONTEXT: true }));
const { EncryptionService } = await import(`${await getImportPath(true, edition)}/encryption/service`);
const encryptionService = nestApp.get(EncryptionService);
2025-02-25 06:52:50 +00:00
const entityManager = queryRunner.manager;
const smtpConfigSettings = [
{
value: process.env?.SMTP_DOMAIN ? 'true' : 'false',
key: INSTANCE_SYSTEM_SETTINGS.SMTP_ENABLED,
type: INSTANCE_SETTINGS_TYPE.SYSTEM,
dataType: 'boolean',
label: 'SMTP ENABLED',
},
{
value: process.env?.SMTP_DOMAIN || '',
key: INSTANCE_SYSTEM_SETTINGS.SMTP_DOMAIN,
type: INSTANCE_SETTINGS_TYPE.SYSTEM,
dataType: 'text',
label: 'Host',
},
{
value: process.env?.SMTP_PORT || '',
key: INSTANCE_SYSTEM_SETTINGS.SMTP_PORT,
type: INSTANCE_SETTINGS_TYPE.SYSTEM,
dataType: 'text',
label: 'Port',
},
{
value: process.env?.SMTP_USERNAME || '',
key: INSTANCE_SYSTEM_SETTINGS.SMTP_USERNAME,
type: INSTANCE_SETTINGS_TYPE.SYSTEM,
dataType: 'text',
label: 'User',
},
{
value: await encryptionService.encryptColumnValue(
INSTANCE_SETTINGS_ENCRYPTION_KEY,
INSTANCE_SYSTEM_SETTINGS.SMTP_PASSWORD,
process.env?.SMTP_PASSWORD || ''
),
key: INSTANCE_SYSTEM_SETTINGS.SMTP_PASSWORD,
type: INSTANCE_SETTINGS_TYPE.SYSTEM,
dataType: 'password',
label: 'Password',
},
];
for (const setting of smtpConfigSettings) {
await entityManager.insert(InstanceSettings, setting);
}
}
public async down(queryRunner: QueryRunner): Promise<void> {}
}