From c769eb4089a9437254a157ffe3cf919afb9e86d1 Mon Sep 17 00:00:00 2001 From: aniebietafia Date: Sat, 31 Aug 2024 16:54:23 +0100 Subject: [PATCH] refactor: function to create data source --- brints-estate-api/src/database/data-source.ts | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/brints-estate-api/src/database/data-source.ts b/brints-estate-api/src/database/data-source.ts index b2536ce..59ba0c1 100644 --- a/brints-estate-api/src/database/data-source.ts +++ b/brints-estate-api/src/database/data-source.ts @@ -1,20 +1,32 @@ +import { DataSource } from 'typeorm'; + import { User } from 'src/users/entities/user.entity'; import { UserAuth } from 'src/users/entities/userAuth.entity'; -import { DataSource } from 'typeorm'; -const AppDataSource = new DataSource({ - type: 'postgres', - host: 'localhost', - port: 5432, - username: 'postgres', - password: 'postgres', - database: 'brints-estate-backend', - synchronize: true, - entities: [User, UserAuth], - // entities: [__dirname + '/**/*.entity{.ts,.js}'], -}); +const isDevelopment = process.env.NODE_ENV === 'development'; + +interface DataSourceConfig { + dbHost: string; + dbPort: number; + dbUser: string; + dbPassword: string; + dbName: string; +} + +export function createDataSource(config: DataSourceConfig) { + return new DataSource({ + type: 'postgres', + host: config.dbHost, + port: config.dbPort, + username: config.dbUser, + password: config.dbPassword, + database: config.dbName, + synchronize: isDevelopment, + entities: [User, UserAuth], + }); +} -export async function initializeDataSource() { +export async function initializeDataSource(AppDataSource: DataSource) { try { if (!AppDataSource.isInitialized) { await AppDataSource.initialize(); @@ -25,5 +37,3 @@ export async function initializeDataSource() { throw error; } } - -export default AppDataSource;