Skip to content

Commit

Permalink
refactor: use shared function to initialize models (#1172)
Browse files Browse the repository at this point in the history
  • Loading branch information
lamkeewei committed May 4, 2021
1 parent aaaaa73 commit 8cdd8d6
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 126 deletions.
66 changes: 2 additions & 64 deletions backend/src/core/loaders/sequelize.loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down Expand Up @@ -76,41 +48,7 @@ const sequelizeLoader = async (): Promise<void> => {
},
} 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()
Expand Down
1 change: 1 addition & 0 deletions backend/src/core/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ export * from './statistic'
export * from './protected_message'
export * from './unsubscriber'
export * from './agency'
export * from './initialize-models'
70 changes: 70 additions & 0 deletions backend/src/core/models/initialize-models.ts
Original file line number Diff line number Diff line change
@@ -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
64 changes: 2 additions & 62 deletions backend/src/test-utils/sequelize-loader.ts
Original file line number Diff line number Diff line change
@@ -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'
Expand All @@ -41,40 +14,7 @@ const sequelizeLoader = async (dbName: string): Promise<Sequelize> => {
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()
Expand Down

0 comments on commit 8cdd8d6

Please sign in to comment.