From c497cb499dcfe7c6a7a8c4ff406db92a393fb406 Mon Sep 17 00:00:00 2001 From: Etienne Noel Date: Wed, 7 Aug 2024 19:47:54 -0400 Subject: [PATCH] - Update in progress --- packages/mysql/src/clients/mysql.client.ts | 32 ++++++++++++++++++- .../src/interfaces/mysql-client.interface.ts | 10 +++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/mysql/src/clients/mysql.client.ts b/packages/mysql/src/clients/mysql.client.ts index a4c9aac2..ba094206 100644 --- a/packages/mysql/src/clients/mysql.client.ts +++ b/packages/mysql/src/clients/mysql.client.ts @@ -45,7 +45,7 @@ export class MysqlClient implements MysqlClientInterface { * @param configUniqueKeyname * @param force */ - async getPool(configUniqueKeyname: string, force: boolean = false): Promise { + async getPool(configUniqueKeyname: string, force: boolean = false, options = {}): Promise { if (!this.pools.has(configUniqueKeyname) && !force) { try { const mysqlConfig = await this.getMysqlConfig(configUniqueKeyname); @@ -58,6 +58,7 @@ export class MysqlClient implements MysqlClientInterface { password: mysqlConfig.password, database: mysqlConfig.database, debug: mysqlConfig.debug, + ...options, }); this.pools.set(configUniqueKeyname, pool); @@ -195,6 +196,35 @@ export class MysqlClient implements MysqlClientInterface { try { const result = await pool.query(sqlStatement, values); + + this.logHandler.debug("Successfully executed the SQL Statement", {sqlStatement, values, result}) + + return result[0]; + } catch (error) { + this.logHandler.error("There was an error executing the SQL Statement", { + sqlStatement, + values, + error, + }); + + throw error; + } + } + + /** + * This method returns the column name for a given class and property name. + * @param configUniqueKeyname + * @param sqlStatement + * @param values + */ + async querySql(configUniqueKeyname: string, sqlStatement: string, values: any[]): Promise { + const pool = await this.getPool(configUniqueKeyname); + + this.logHandler.debug("Executing SQL Statement", {sqlStatement, values}); + + try { + const result = await pool.query(sqlStatement, values); + this.logHandler.debug("Successfully executed the SQL Statement", {sqlStatement, values, result}) return result[0]; diff --git a/packages/mysql/src/interfaces/mysql-client.interface.ts b/packages/mysql/src/interfaces/mysql-client.interface.ts index 3d25ee6b..050aae3e 100644 --- a/packages/mysql/src/interfaces/mysql-client.interface.ts +++ b/packages/mysql/src/interfaces/mysql-client.interface.ts @@ -9,7 +9,7 @@ export interface MysqlClientInterface { * @param configUniqueKeyname * @param force */ - getPool(configUniqueKeyname: string, force: boolean): Promise; + getPool(configUniqueKeyname: string, force?: boolean, options?: any): Promise; /** * This method returns the table metadata for a given class. @@ -58,6 +58,14 @@ export interface MysqlClientInterface { */ executeSql(configUniqueKeyname: string, sqlStatement: string, values: any[]): Promise + /** + * This method returns the column name for a given class and property name. + * @param configUniqueKeyname + * @param sqlStatement + * @param values + */ + querySql(configUniqueKeyname: string, sqlStatement: string, values: any[]): Promise + /** * This method maps the results to a given class type. * @param classType