From f4c90e8259bd50f2bbebe1de4bfc907aa55f2893 Mon Sep 17 00:00:00 2001 From: Lam Kee Wei Date: Tue, 4 May 2021 12:53:41 +0800 Subject: [PATCH] refactor: use shared function to initialize models --- backend/src/core/loaders/sequelize.loader.ts | 66 +----------------- backend/src/core/models/index.ts | 1 + backend/src/core/models/initialize-models.ts | 70 ++++++++++++++++++++ backend/src/test-utils/sequelize-loader.ts | 64 +----------------- 4 files changed, 75 insertions(+), 126 deletions(-) create mode 100644 backend/src/core/models/initialize-models.ts diff --git a/backend/src/core/loaders/sequelize.loader.ts b/backend/src/core/loaders/sequelize.loader.ts index 4ed0c12da..a900913fb 100644 --- a/backend/src/core/loaders/sequelize.loader.ts +++ b/backend/src/core/loaders/sequelize.loader.ts @@ -2,35 +2,7 @@ import { Sequelize, SequelizeOptions } from 'sequelize-typescript' import { parse } from 'pg-connection-string' import config from '@core/config' -import { - Credential, - JobQueue, - Campaign, - Worker, - User, - UserFeature, - UserCredential, - UserDemo, - Statistic, - ProtectedMessage, - Unsubscriber, - Agency, -} from '@core/models' -import { - EmailMessage, - EmailTemplate, - EmailOp, - EmailBlacklist, - EmailFromAddress, -} from '@email/models' -import { SmsMessage, SmsTemplate, SmsOp } from '@sms/models' -import { - BotSubscriber, - TelegramMessage, - TelegramOp, - TelegramSubscriber, - TelegramTemplate, -} from '@telegram/models' +import { Credential, initializeModels } from '@core/models' import { loggerWithLabel } from '@core/logger' import { MutableConfig, generateRdsIamAuthToken } from '@core/utils/rds-iam' @@ -76,41 +48,7 @@ const sequelizeLoader = async (): Promise => { }, } as SequelizeOptions) - const coreModels = [ - Credential, - JobQueue, - Campaign, - Worker, - User, - UserFeature, - UserCredential, - UserDemo, - Statistic, - Unsubscriber, - Agency, - ] - const emailModels = [ - EmailMessage, - EmailTemplate, - EmailOp, - EmailBlacklist, - ProtectedMessage, - EmailFromAddress, - ] - const smsModels = [SmsMessage, SmsTemplate, SmsOp] - const telegramModels = [ - BotSubscriber, - TelegramOp, - TelegramMessage, - TelegramTemplate, - TelegramSubscriber, - ] - sequelize.addModels([ - ...coreModels, - ...emailModels, - ...smsModels, - ...telegramModels, - ]) + initializeModels(sequelize) try { await sequelize.sync() diff --git a/backend/src/core/models/index.ts b/backend/src/core/models/index.ts index 6b69773fb..bf3dc24e5 100644 --- a/backend/src/core/models/index.ts +++ b/backend/src/core/models/index.ts @@ -10,3 +10,4 @@ export * from './statistic' export * from './protected_message' export * from './unsubscriber' export * from './agency' +export * from './initialize-models' diff --git a/backend/src/core/models/initialize-models.ts b/backend/src/core/models/initialize-models.ts new file mode 100644 index 000000000..63e7fa1a0 --- /dev/null +++ b/backend/src/core/models/initialize-models.ts @@ -0,0 +1,70 @@ +import { Sequelize } from 'sequelize-typescript' +import { + Credential, + JobQueue, + Campaign, + Worker, + User, + UserFeature, + UserCredential, + UserDemo, + Statistic, + ProtectedMessage, + Unsubscriber, + Agency, +} from '@core/models' +import { + EmailMessage, + EmailTemplate, + EmailOp, + EmailBlacklist, + EmailFromAddress, +} from '@email/models' +import { SmsMessage, SmsTemplate, SmsOp } from '@sms/models' +import { + BotSubscriber, + TelegramMessage, + TelegramOp, + TelegramSubscriber, + TelegramTemplate, +} from '@telegram/models' + +export const initializeModels = (sequelize: Sequelize): void => { + const coreModels = [ + Credential, + JobQueue, + Campaign, + Worker, + User, + UserFeature, + UserCredential, + UserDemo, + Statistic, + Unsubscriber, + Agency, + ] + const emailModels = [ + EmailMessage, + EmailTemplate, + EmailOp, + EmailBlacklist, + ProtectedMessage, + EmailFromAddress, + ] + const smsModels = [SmsMessage, SmsTemplate, SmsOp] + const telegramModels = [ + BotSubscriber, + TelegramOp, + TelegramMessage, + TelegramTemplate, + TelegramSubscriber, + ] + sequelize.addModels([ + ...coreModels, + ...emailModels, + ...smsModels, + ...telegramModels, + ]) +} + +export default initializeModels diff --git a/backend/src/test-utils/sequelize-loader.ts b/backend/src/test-utils/sequelize-loader.ts index 0cdca8fec..392bbc0c9 100644 --- a/backend/src/test-utils/sequelize-loader.ts +++ b/backend/src/test-utils/sequelize-loader.ts @@ -1,33 +1,6 @@ import { Sequelize, SequelizeOptions } from 'sequelize-typescript' import config from '@core/config' -import { - Credential, - JobQueue, - Campaign, - Worker, - User, - UserFeature, - UserCredential, - UserDemo, - Statistic, - ProtectedMessage, - Unsubscriber, -} from '@core/models' -import { - EmailMessage, - EmailTemplate, - EmailOp, - EmailBlacklist, - EmailFromAddress, -} from '@email/models' -import { SmsMessage, SmsTemplate, SmsOp } from '@sms/models' -import { - BotSubscriber, - TelegramMessage, - TelegramOp, - TelegramSubscriber, - TelegramTemplate, -} from '@telegram/models' +import { Credential, initializeModels } from '@core/models' import { DefaultCredentialName } from '@core/constants' import { formatDefaultCredentialName } from '@core/utils' @@ -41,40 +14,7 @@ const sequelizeLoader = async (dbName: string): Promise => { pool: config.get('database.poolOptions'), } as SequelizeOptions) - const coreModels = [ - Credential, - JobQueue, - Campaign, - Worker, - User, - UserFeature, - UserCredential, - UserDemo, - Statistic, - Unsubscriber, - ] - const emailModels = [ - EmailMessage, - EmailTemplate, - EmailOp, - EmailBlacklist, - ProtectedMessage, - EmailFromAddress, - ] - const smsModels = [SmsMessage, SmsTemplate, SmsOp] - const telegramModels = [ - BotSubscriber, - TelegramOp, - TelegramMessage, - TelegramTemplate, - TelegramSubscriber, - ] - sequelize.addModels([ - ...coreModels, - ...emailModels, - ...smsModels, - ...telegramModels, - ]) + initializeModels(sequelize) try { await sequelize.sync()