From f2e46a602e5d048d0672ba64984b04a95df51936 Mon Sep 17 00:00:00 2001 From: Joelbrit0 Date: Wed, 21 Jan 2026 11:45:27 -0300 Subject: [PATCH] feat: Add Oracle database integration with TypeORM and client initialization for the NestJS application. --- src/config/typeorm.config.ts | 20 ++++++++++++++++++++ src/helpers/oracle.helper.ts | 21 +++++++++++++++++++++ src/main.ts | 2 ++ 3 files changed, 43 insertions(+) create mode 100644 src/config/typeorm.config.ts create mode 100644 src/helpers/oracle.helper.ts diff --git a/src/config/typeorm.config.ts b/src/config/typeorm.config.ts new file mode 100644 index 0000000..2a09ac8 --- /dev/null +++ b/src/config/typeorm.config.ts @@ -0,0 +1,20 @@ +import { DataSource } from 'typeorm'; +import * as path from 'path'; + + +export const AppDataSource = new DataSource({ + type: 'oracle', + username: process.env.DB_USERNAME || 'teste', + password: process.env.DB_PASSWORD || 'teste', + connectString: + process.env.DB_CONNECT_STRING || + '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.241)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=BDTESTE)))', + synchronize: false, + logging: true, + entities: [__dirname + '/../**/*.{entity,view}.{js,ts}'], + subscribers: [process.env.DB_SUBSCRIBERS_PATH || 'dist/subscriber/*.js'], + extra: { + poolSize: parseInt(process.env.DB_POOL_SIZE || '10', 10), + maxRows: parseInt(process.env.DB_MAX_ROWS || '1000', 10), + }, +}); diff --git a/src/helpers/oracle.helper.ts b/src/helpers/oracle.helper.ts new file mode 100644 index 0000000..33043e9 --- /dev/null +++ b/src/helpers/oracle.helper.ts @@ -0,0 +1,21 @@ +import * as path from 'path'; +import * as fs from 'fs'; +import * as oracledb from 'oracledb'; + +export function initializeOracleClient(): void { + try { + const oracleClientPath = process.env.ORACLE_CLIENT_PATH; + const libDir = + oracleClientPath && fs.existsSync(path.normalize(oracleClientPath)) + ? path.normalize(oracleClientPath) + : undefined; + + oracledb.initOracleClient(libDir ? { libDir } : undefined); + } catch (err: unknown) { + const errorMessage = err instanceof Error ? err.message : String(err); + console.warn( + 'Oracle Client Thick mode initialization failed:', + errorMessage, + ); + } +} diff --git a/src/main.ts b/src/main.ts index 13cad38..c3255d7 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,9 @@ import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; +import { initializeOracleClient } from './helpers/oracle.helper'; async function bootstrap() { + initializeOracleClient(); const app = await NestFactory.create(AppModule); await app.listen(3000); }