Skip to content

Commit

Permalink
revert: fix: email templates rendering migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
rahul-rocket committed Sep 16, 2024
1 parent 511646c commit 264a756
Show file tree
Hide file tree
Showing 7 changed files with 259 additions and 60 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
import * as chalk from 'chalk';
import { EmailTemplateEnum } from '@gauzy/contracts';
import { DatabaseTypeEnum } from '@gauzy/config';
import { EmailTemplateUtils } from '../../email-template/utils';

export class MigrateEmailTemplatesData1643809486960 implements MigrationInterface {
Expand All @@ -14,6 +15,52 @@ export class MigrateEmailTemplatesData1643809486960 implements MigrationInterfac
public async up(queryRunner: QueryRunner): Promise<void> {
console.log(chalk.yellow(this.name + ' start running!'));

switch (queryRunner.connection.options.type) {
case DatabaseTypeEnum.sqlite:
case DatabaseTypeEnum.betterSqlite3:
await this.sqliteUpQueryRunner(queryRunner);
break;
case DatabaseTypeEnum.postgres:
await this.postgresUpQueryRunner(queryRunner);
break;
case DatabaseTypeEnum.mysql:
await this.mysqlUpQueryRunner(queryRunner);
break;
default:
throw Error(`Unsupported database: ${queryRunner.connection.options.type}`);
}
}

/**
* Down Migration
*
* @param queryRunner
*/
public async down(queryRunner: QueryRunner): Promise<void> {
switch (queryRunner.connection.options.type) {
case DatabaseTypeEnum.sqlite:
case DatabaseTypeEnum.betterSqlite3:
await this.sqliteDownQueryRunner(queryRunner);
break;
case DatabaseTypeEnum.postgres:
await this.postgresDownQueryRunner(queryRunner);
break;
case DatabaseTypeEnum.mysql:
await this.mysqlDownQueryRunner(queryRunner);
break;
default:
throw Error(`Unsupported database: ${queryRunner.connection.options.type}`);
}
}

/**
* Up Migration
*
* @param queryRunner
*/
public async postgresUpQueryRunner(queryRunner: QueryRunner): Promise<any> {
console.log(chalk.yellow(this.name + ' start running!'));

// Migrate email templates for all templates
const templates = Object.values(EmailTemplateEnum);

Expand All @@ -27,10 +74,44 @@ export class MigrateEmailTemplatesData1643809486960 implements MigrationInterfac
}
}

public async postgresDownQueryRunner(queryRunner: QueryRunner): Promise<any> {}

/**
* Down Migration
* Up Migration
*
* @param queryRunner
*/
public async sqliteUpQueryRunner(queryRunner: QueryRunner): Promise<any> {
console.log(chalk.yellow(this.name + ' start running!'));

const templates = Object.values(EmailTemplateEnum);
for await (const template of templates) {
try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, template);
} catch (error) {
console.log(`Error while migrating missing email templates for ${template}`, error);
}
}
}

/**
* SqliteDB Down Migration
*
* @param queryRunner
*/
public async sqliteDownQueryRunner(queryRunner: QueryRunner): Promise<any> {}

/**
* MySQL Up Migration
*
* @param queryRunner
*/
public async mysqlUpQueryRunner(queryRunner: QueryRunner): Promise<any> {}

/**
* MySQL Down Migration
*
* @param queryRunner
*/
public async down(queryRunner: QueryRunner): Promise<void> {}
public async mysqlDownQueryRunner(queryRunner: QueryRunner): Promise<any> {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@ export class RolePermissionsReload1644312012849 implements MigrationInterface {
case DatabaseTypeEnum.sqlite:
case DatabaseTypeEnum.betterSqlite3:
case DatabaseTypeEnum.postgres:
case DatabaseTypeEnum.mysql:
try {
await RolePermissionUtils.migrateRolePermissions(queryRunner);
} catch (error) {
console.log(chalk.red(`Error while migrating missing role permisions: ${error}`));
}
break;
case DatabaseTypeEnum.mysql:
console.log('role permission migration is not supported for mysql yet');
break;
default:
throw Error(`Unsupported database: ${queryRunner.connection.options.type}`);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
import * as chalk from 'chalk';
import { EmailTemplateEnum } from '@gauzy/contracts';
import { DatabaseTypeEnum } from '@gauzy/config';
import { EmailTemplateUtils } from '../../email-template/utils';

export class EmailTemplateReader1678876700413 implements MigrationInterface {
Expand All @@ -14,6 +15,34 @@ export class EmailTemplateReader1678876700413 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
console.log(chalk.yellow(this.name + ' start running!'));

switch (queryRunner.connection.options.type) {
case DatabaseTypeEnum.sqlite:
case DatabaseTypeEnum.betterSqlite3:
case DatabaseTypeEnum.postgres:
await this.sqlitePostgresMigrateEmailTemplate(queryRunner);
break;
case DatabaseTypeEnum.mysql:
await this.mysqlMigrateEmailTemplate(queryRunner);
break;
default:
throw Error(`Unsupported database: ${queryRunner.connection.options.type}`);
}
}
/**
* Down Migration
*
* @param queryRunner
*/
public async down(queryRunner: QueryRunner): Promise<void> {}

/**
* Sqlite | better-sqlite3 | MySQL Up Migration
*
* @param queryRunner
*/
public async sqlitePostgresMigrateEmailTemplate(queryRunner: QueryRunner): Promise<any> {
console.log(chalk.yellow(this.name + ' start running!'));

try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, EmailTemplateEnum.EMAIL_RESET);
} catch (error) {
Expand All @@ -27,16 +56,16 @@ export class EmailTemplateReader1678876700413 implements MigrationInterface {
);
} catch (error) {
console.log(
`Error while migrating missing email templates for ${EmailTemplateEnum.ORGANIZATION_TEAM_JOIN_REQUEST}`,
`Error while migrating email template for ${EmailTemplateEnum.ORGANIZATION_TEAM_JOIN_REQUEST}`,
error
);
}
}

/**
* Down Migration
* MySQL Up Migration
*
* @param queryRunner
*/
public async down(queryRunner: QueryRunner): Promise<void> {}
public async mysqlMigrateEmailTemplate(queryRunner: QueryRunner): Promise<any> {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@ export class MigrateRolePermisisons1679765443208 implements MigrationInterface {
case DatabaseTypeEnum.sqlite:
case DatabaseTypeEnum.betterSqlite3:
case DatabaseTypeEnum.postgres:
case DatabaseTypeEnum.mysql:
try {
await RolePermissionUtils.migrateRolePermissions(queryRunner);
} catch (error) {
console.log(chalk.red(`Error while migrating missing role permisions: ${error}`));
}
break;
case DatabaseTypeEnum.mysql:
console.log('role permission migration is not supported for mysql yet');
break;
default:
throw Error(`Unsupported database: ${queryRunner.connection.options.type}`);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
import * as chalk from 'chalk';
import { EmailTemplateEnum } from '@gauzy/contracts';
import { DatabaseTypeEnum } from '@gauzy/config';
import { EmailTemplateUtils } from '../../email-template/utils';

export class UpdateEmailTemplates1680539459969 implements MigrationInterface {
Expand All @@ -14,10 +15,38 @@ export class UpdateEmailTemplates1680539459969 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
console.log(chalk.yellow(this.name + ' start running!'));

switch (queryRunner.connection.options.type) {
case DatabaseTypeEnum.sqlite:
case DatabaseTypeEnum.betterSqlite3:
case DatabaseTypeEnum.postgres:
await this.sqlitePostgresUpdateEmailTemplates(queryRunner);
break;
case DatabaseTypeEnum.mysql:
await this.mysqlUpdateEmailTemplates(queryRunner);
break;
default:
throw Error(`Unsupported database: ${queryRunner.connection.options.type}`);
}
}
/**
* Down Migration
*
* @param queryRunner
*/
public async down(queryRunner: QueryRunner): Promise<void> {}

/**
* Sqlite | better-sqlite3 | postgres Up Migration
*
* @param queryRunner
*/
public async sqlitePostgresUpdateEmailTemplates(queryRunner: QueryRunner): Promise<any> {
console.log(chalk.yellow(this.name + ' start running!'));

// Migrate email templates for all templates
const templates = Object.values(EmailTemplateEnum);

// Iterate over each template and migrate it
// Iterate over each template and update it
for await (const template of templates) {
try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, template);
Expand All @@ -26,10 +55,11 @@ export class UpdateEmailTemplates1680539459969 implements MigrationInterface {
}
}
}

/**
* Down Migration
* MySQL Up Migration
*
* @param queryRunner
*/
public async down(queryRunner: QueryRunner): Promise<void> {}
public async mysqlUpdateEmailTemplates(queryRunner: QueryRunner): Promise<any> {}
}
Original file line number Diff line number Diff line change
@@ -1,50 +1,76 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
import * as chalk from 'chalk';
import { EmailTemplateEnum } from '@gauzy/contracts';
import { EmailTemplateUtils } from '../../email-template/utils';
import { MigrationInterface, QueryRunner } from "typeorm";
import * as chalk from "chalk";
import { EmailTemplateEnum } from "@gauzy/contracts";
import { EmailTemplateUtils } from "../../email-template/utils";
import { DatabaseTypeEnum } from "@gauzy/config";

export class AddMultiTenantResetPasswordEmailTemplate1700462617037 implements MigrationInterface {
name = 'AddMultiTenantResetPasswordEmailTemplate1700462617037';

/**
* Up Migration
*
* @param queryRunner
*/
public async up(queryRunner: QueryRunner): Promise<void> {
console.log(chalk.yellow(this.name + ' start running!'));
// Migrate email templates for multi-tenant password reset
try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, EmailTemplateEnum.MULTI_TENANT_PASSWORD_RESET);
} catch (error) {
console.log(
`Error while migrating missing email templates for ${EmailTemplateEnum.MULTI_TENANT_PASSWORD_RESET}`,
error
);
}

// Migrate email templates for regular password reset
try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, EmailTemplateEnum.PASSWORD_RESET);
} catch (error) {
console.log(`Error while migrating missing email templates for ${EmailTemplateEnum.PASSWORD_RESET}`, error);
}

// Migrate email templates for regular password less authentication
try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, EmailTemplateEnum.PASSWORD_LESS_AUTHENTICATION);
} catch (error) {
console.log(
`Error while migrating missing email templates for ${EmailTemplateEnum.PASSWORD_LESS_AUTHENTICATION}`,
error
);
}
}

/**
* Down Migration
*
* @param queryRunner
*/
public async down(queryRunner: QueryRunner): Promise<void> {}

name = 'AddMultiTenantResetPasswordEmailTemplate1700462617037';

/**
* Up Migration
*
* @param queryRunner
*/
public async up(queryRunner: QueryRunner): Promise<void> {
console.log(chalk.yellow(this.name + ' start running!'));

switch (queryRunner.connection.options.type) {
case DatabaseTypeEnum.sqlite:
case DatabaseTypeEnum.betterSqlite3:
case DatabaseTypeEnum.postgres:
await this.sqlitePostgresResetPasswordEmailTemplate(queryRunner);
break;
case DatabaseTypeEnum.mysql:
await this.mysqlResetPasswordEmailTemplate(queryRunner);
break;
default:
throw Error(`Unsupported database: ${queryRunner.connection.options.type}`);
}
}
/**
* Down Migration
*
* @param queryRunner
*/
public async down(queryRunner: QueryRunner): Promise<void> { }

/**
* Sqlite | better-sqlite3 | postgres Up Migration
*
* @param queryRunner
*/
public async sqlitePostgresResetPasswordEmailTemplate(queryRunner: QueryRunner): Promise<any> {
console.log(chalk.yellow(this.name + ' start running!'));

// Migrate email templates for multi-tenant password reset
try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, EmailTemplateEnum.MULTI_TENANT_PASSWORD_RESET);
} catch (error) {
console.log(`Error while migrating missing email templates for ${EmailTemplateEnum.MULTI_TENANT_PASSWORD_RESET}`, error);
}

// Migrate email templates for regular password reset
try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, EmailTemplateEnum.PASSWORD_RESET);
} catch (error) {
console.log(`Error while migrating missing email templates for ${EmailTemplateEnum.PASSWORD_RESET}`, error);
}

// Migrate email templates for regular password less authentication
try {
await EmailTemplateUtils.migrateEmailTemplates(queryRunner, EmailTemplateEnum.PASSWORD_LESS_AUTHENTICATION);
} catch (error) {
console.log(`Error while migrating missing email templates for ${EmailTemplateEnum.PASSWORD_LESS_AUTHENTICATION}`, error);
}
}

/**
* MySQL Up Migration
*
* @param queryRunner
*/
public async mysqlResetPasswordEmailTemplate(queryRunner: QueryRunner): Promise<any> { }

}
Loading

0 comments on commit 264a756

Please sign in to comment.