diff --git a/README.md b/README.md index e65900c..1e822b5 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ prisma generate ```typescript import { createSequelizeInstance } from './prisma/sequelize'; -const { sequelize, models } = new createSequelizeInstance({ +const { sequelize, models } = createSequelizeInstance({ ssl: true, dialectOptions: { connectTimeout: 1000, diff --git a/plop/index.ts.hbs b/plop/index.ts.hbs index cb98d7e..44630c5 100644 --- a/plop/index.ts.hbs +++ b/plop/index.ts.hbs @@ -18,7 +18,7 @@ const databaseUrl = config.datasource.url.fromEnvVar ? env[config.datasource.url.fromEnvVar] : config.datasource.url.value; -export const createSequelizeInstance = async (options?: Options) => { +export const createSequelizeInstance = (options?: Options) => { const withDefaults = mergeDeepRight({ define: { freezeTableName: true, @@ -27,14 +27,17 @@ export const createSequelizeInstance = async (options?: Options) => { const sequelize = new Sequelize(databaseUrl, withDefaults(options ?? {})); + // First initialize all models Object.keys(models).forEach((model) => { models[model].initialize?.(sequelize); + }); + + // Then apply associations + Object.keys(models).forEach((model) => { models[model].associate?.(models); models[model].hooks?.(models); }); - await sequelize.authenticate(); - return { sequelize, models, diff --git a/prisma/sequelize/index.ts b/prisma/sequelize/index.ts index f2b7601..d6ad23d 100644 --- a/prisma/sequelize/index.ts +++ b/prisma/sequelize/index.ts @@ -18,7 +18,7 @@ const databaseUrl = config.datasource.url.fromEnvVar ? env[config.datasource.url.fromEnvVar] : config.datasource.url.value; -export const createSequelizeInstance = async (options?: Options) => { +export const createSequelizeInstance = (options?: Options) => { const withDefaults = mergeDeepRight({ define: { freezeTableName: true, @@ -27,14 +27,17 @@ export const createSequelizeInstance = async (options?: Options) => { const sequelize = new Sequelize(databaseUrl, withDefaults(options ?? {})); + // First initialize all models Object.keys(models).forEach((model) => { models[model].initialize?.(sequelize); + }); + + // Then apply associations + Object.keys(models).forEach((model) => { models[model].associate?.(models); models[model].hooks?.(models); }); - await sequelize.authenticate(); - return { sequelize, models,