From d509e7867c26d2fbf5ad7eacdd5c5c8c85d5d8e3 Mon Sep 17 00:00:00 2001 From: Victor Korzunin Date: Sat, 11 Sep 2021 20:43:08 +0200 Subject: [PATCH] feat: accept sequelize options on create instance --- plop/index.ts.hbs | 13 +++++++------ prisma/sequelize/index.ts | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/plop/index.ts.hbs b/plop/index.ts.hbs index 69ed076..cb98d7e 100644 --- a/plop/index.ts.hbs +++ b/plop/index.ts.hbs @@ -1,14 +1,14 @@ -import { Sequelize } from 'sequelize'; +import { Options, Sequelize } from 'sequelize'; import { tryLoadEnvs } from '@prisma/sdk'; +import { mergeDeepRight } from 'ramda'; import path from 'path'; import { findSync } from './utils'; import config from './config.json'; +import * as models from './models'; const dirname = findSync(process.cwd(), ['{{relativeOutputDir}}', '{{slsRelativeOutputDir}}'], ['d'], ['d'], 1)[0] || __dirname; -import * as models from './models'; - const loadedEnv = tryLoadEnvs({ rootEnvPath: config.relativeEnvPaths.rootEnvPath && path.resolve(dirname, config.relativeEnvPaths.rootEnvPath), schemaEnvPath: config.relativeEnvPaths.schemaEnvPath && path.resolve(dirname, config.relativeEnvPaths.schemaEnvPath), @@ -18,14 +18,15 @@ const databaseUrl = config.datasource.url.fromEnvVar ? env[config.datasource.url.fromEnvVar] : config.datasource.url.value; -export const createInstance = async () => { - const sequelize = new Sequelize(databaseUrl, { - ssl: true, +export const createSequelizeInstance = async (options?: Options) => { + const withDefaults = mergeDeepRight({ define: { freezeTableName: true, }, }); + const sequelize = new Sequelize(databaseUrl, withDefaults(options ?? {})); + Object.keys(models).forEach((model) => { models[model].initialize?.(sequelize); models[model].associate?.(models); diff --git a/prisma/sequelize/index.ts b/prisma/sequelize/index.ts index 0935496..f2b7601 100644 --- a/prisma/sequelize/index.ts +++ b/prisma/sequelize/index.ts @@ -1,14 +1,14 @@ -import { Sequelize } from 'sequelize'; +import { Options, Sequelize } from 'sequelize'; import { tryLoadEnvs } from '@prisma/sdk'; +import { mergeDeepRight } from 'ramda'; import path from 'path'; import { findSync } from './utils'; import config from './config.json'; +import * as models from './models'; const dirname = findSync(process.cwd(), ['prisma/sequelize', 'sequelize'], ['d'], ['d'], 1)[0] || __dirname; -import * as models from './models'; - const loadedEnv = tryLoadEnvs({ rootEnvPath: config.relativeEnvPaths.rootEnvPath && path.resolve(dirname, config.relativeEnvPaths.rootEnvPath), schemaEnvPath: config.relativeEnvPaths.schemaEnvPath && path.resolve(dirname, config.relativeEnvPaths.schemaEnvPath), @@ -18,14 +18,15 @@ const databaseUrl = config.datasource.url.fromEnvVar ? env[config.datasource.url.fromEnvVar] : config.datasource.url.value; -export const createInstance = async () => { - const sequelize = new Sequelize(databaseUrl, { - ssl: true, +export const createSequelizeInstance = async (options?: Options) => { + const withDefaults = mergeDeepRight({ define: { freezeTableName: true, }, }); + const sequelize = new Sequelize(databaseUrl, withDefaults(options ?? {})); + Object.keys(models).forEach((model) => { models[model].initialize?.(sequelize); models[model].associate?.(models);