UNPKG

@js-ak/db-manager

Version:
39 lines (38 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setLoggerAndExecutor = setLoggerAndExecutor; const node_crypto_1 = require("node:crypto"); async function queryLogged(query, values) { const queryId = (0, node_crypto_1.randomUUID)(); const start = performance.now(); this.logger.info(`[${queryId}] Query started. QUERY: ${query} VALUES: ${JSON.stringify(values)}`); try { const data = await this.client.query(query, values); const execTime = Math.round(performance.now() - start); this.logger.info(`[${queryId}] Query executed successfully in ${execTime} ms.`); return data; } catch (error) { const execTime = Math.round(performance.now() - start); this.logger.error(`[${queryId}] Query failed in ${execTime} ms. ERROR: ${error.message}`); throw error; } } function setLoggerAndExecutor(pool, options) { const { isLoggerEnabled, logger } = options || {}; if (isLoggerEnabled) { // eslint-disable-next-line no-console const resultLogger = logger || { error: console.error, info: console.log }; return { executeSql: async (sql) => (await (queryLogged).bind({ client: pool, logger: resultLogger })(sql.query, sql.values)), isLoggerEnabled: true, logger: resultLogger, }; } else { return { executeSql: async (sql) => (await pool.query(sql.query, sql.values)), isLoggerEnabled, }; } }