diff --git a/packages/core/src/database/migrations/1643809486960-MigrateEmailTemplatesData.ts b/packages/core/src/database/migrations/1643809486960-MigrateEmailTemplatesData.ts index 7e1b06b90a6..573c81c2979 100644 --- a/packages/core/src/database/migrations/1643809486960-MigrateEmailTemplatesData.ts +++ b/packages/core/src/database/migrations/1643809486960-MigrateEmailTemplatesData.ts @@ -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 { @@ -14,6 +15,52 @@ export class MigrateEmailTemplatesData1643809486960 implements MigrationInterfac public async up(queryRunner: QueryRunner): Promise { 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 { + 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 { + console.log(chalk.yellow(this.name + ' start running!')); + // Migrate email templates for all templates const templates = Object.values(EmailTemplateEnum); @@ -27,10 +74,44 @@ export class MigrateEmailTemplatesData1643809486960 implements MigrationInterfac } } + public async postgresDownQueryRunner(queryRunner: QueryRunner): Promise {} + /** - * Down Migration + * Up Migration + * + * @param queryRunner + */ + public async sqliteUpQueryRunner(queryRunner: QueryRunner): Promise { + 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 {} + + /** + * MySQL Up Migration + * + * @param queryRunner + */ + public async mysqlUpQueryRunner(queryRunner: QueryRunner): Promise {} + + /** + * MySQL Down Migration * * @param queryRunner */ - public async down(queryRunner: QueryRunner): Promise {} + public async mysqlDownQueryRunner(queryRunner: QueryRunner): Promise {} } diff --git a/packages/core/src/database/migrations/1644312012849-RolePermissionsReload.ts b/packages/core/src/database/migrations/1644312012849-RolePermissionsReload.ts index 4793bf8e992..662d70d0f29 100644 --- a/packages/core/src/database/migrations/1644312012849-RolePermissionsReload.ts +++ b/packages/core/src/database/migrations/1644312012849-RolePermissionsReload.ts @@ -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}`); } diff --git a/packages/core/src/database/migrations/1678876700413-EmailTemplateReader.ts b/packages/core/src/database/migrations/1678876700413-EmailTemplateReader.ts index f72d1f5dd14..9c65460bce1 100644 --- a/packages/core/src/database/migrations/1678876700413-EmailTemplateReader.ts +++ b/packages/core/src/database/migrations/1678876700413-EmailTemplateReader.ts @@ -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 { @@ -14,6 +15,34 @@ export class EmailTemplateReader1678876700413 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { 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 {} + + /** + * Sqlite | better-sqlite3 | MySQL Up Migration + * + * @param queryRunner + */ + public async sqlitePostgresMigrateEmailTemplate(queryRunner: QueryRunner): Promise { + console.log(chalk.yellow(this.name + ' start running!')); + try { await EmailTemplateUtils.migrateEmailTemplates(queryRunner, EmailTemplateEnum.EMAIL_RESET); } catch (error) { @@ -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 {} + public async mysqlMigrateEmailTemplate(queryRunner: QueryRunner): Promise {} } diff --git a/packages/core/src/database/migrations/1679765443208-MigrateRolePermisisons.ts b/packages/core/src/database/migrations/1679765443208-MigrateRolePermisisons.ts index c880dc5fd6c..255b19ebb58 100644 --- a/packages/core/src/database/migrations/1679765443208-MigrateRolePermisisons.ts +++ b/packages/core/src/database/migrations/1679765443208-MigrateRolePermisisons.ts @@ -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}`); } diff --git a/packages/core/src/database/migrations/1680539459969-UpdateEmailTemplates.ts b/packages/core/src/database/migrations/1680539459969-UpdateEmailTemplates.ts index b01e623b03b..673ed37bd83 100644 --- a/packages/core/src/database/migrations/1680539459969-UpdateEmailTemplates.ts +++ b/packages/core/src/database/migrations/1680539459969-UpdateEmailTemplates.ts @@ -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 { @@ -14,10 +15,38 @@ export class UpdateEmailTemplates1680539459969 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { 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 {} + + /** + * Sqlite | better-sqlite3 | postgres Up Migration + * + * @param queryRunner + */ + public async sqlitePostgresUpdateEmailTemplates(queryRunner: QueryRunner): Promise { + 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); @@ -26,10 +55,11 @@ export class UpdateEmailTemplates1680539459969 implements MigrationInterface { } } } + /** - * Down Migration + * MySQL Up Migration * * @param queryRunner */ - public async down(queryRunner: QueryRunner): Promise {} + public async mysqlUpdateEmailTemplates(queryRunner: QueryRunner): Promise {} } diff --git a/packages/core/src/database/migrations/1700462617037-AddMultiTenantResetPasswordEmailTemplate.ts b/packages/core/src/database/migrations/1700462617037-AddMultiTenantResetPasswordEmailTemplate.ts index 87fcb08125e..8cfd06fab06 100644 --- a/packages/core/src/database/migrations/1700462617037-AddMultiTenantResetPasswordEmailTemplate.ts +++ b/packages/core/src/database/migrations/1700462617037-AddMultiTenantResetPasswordEmailTemplate.ts @@ -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 { - 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 {} + + name = 'AddMultiTenantResetPasswordEmailTemplate1700462617037'; + + /** + * Up Migration + * + * @param queryRunner + */ + public async up(queryRunner: QueryRunner): Promise { + 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 { } + + /** + * Sqlite | better-sqlite3 | postgres Up Migration + * + * @param queryRunner + */ + public async sqlitePostgresResetPasswordEmailTemplate(queryRunner: QueryRunner): Promise { + 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 { } + } diff --git a/packages/core/src/database/migrations/1701353754397-MigrateEmailTemplates.ts b/packages/core/src/database/migrations/1701353754397-MigrateEmailTemplates.ts index b84a13fca19..326bab9e3d8 100644 --- a/packages/core/src/database/migrations/1701353754397-MigrateEmailTemplates.ts +++ b/packages/core/src/database/migrations/1701353754397-MigrateEmailTemplates.ts @@ -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 MigrateEmailTemplates1701353754397 implements MigrationInterface { @@ -14,10 +15,38 @@ export class MigrateEmailTemplates1701353754397 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { console.log(chalk.yellow(this.name + ' start running!')); + switch (queryRunner.connection.options.type) { + case DatabaseTypeEnum.sqlite: + case DatabaseTypeEnum.betterSqlite3: + case DatabaseTypeEnum.postgres: + await this.sqlitePostgresMigrateEmailTemplates(queryRunner); + break; + case DatabaseTypeEnum.mysql: + await this.mysqlMigrateEmailTemplates(queryRunner); + break; + default: + throw Error(`Unsupported database: ${queryRunner.connection.options.type}`); + } + } + /** + * Down Migration + * + * @param queryRunner + */ + public async down(queryRunner: QueryRunner): Promise {} + + /** + * Sqlite | better-sqlite3 | postgres Up Migration + * + * @param queryRunner + */ + public async sqlitePostgresMigrateEmailTemplates(queryRunner: QueryRunner): Promise { + 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 migrate the data for await (const template of templates) { try { await EmailTemplateUtils.migrateEmailTemplates(queryRunner, template); @@ -28,9 +57,9 @@ export class MigrateEmailTemplates1701353754397 implements MigrationInterface { } /** - * Down Migration + * MySQL Up Migration * * @param queryRunner */ - public async down(queryRunner: QueryRunner): Promise {} + public async mysqlMigrateEmailTemplates(queryRunner: QueryRunner): Promise {} }