@js-ak/db-manager
Version:
39 lines (38 loc) • 1.53 kB
JavaScript
;
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,
};
}
}