ts-sql-query
Version:
Type-safe SQL query builder like QueryDSL or JOOQ in Java or Linq in .Net for TypeScript with MariaDB, MySql, Oracle, PostgreSql, Sqlite and SqlServer support.
76 lines (75 loc) • 3.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConsoleLogQueryRunner = void 0;
const LoggingQueryRunner_1 = require("./LoggingQueryRunner");
class ConsoleLogQueryRunner extends LoggingQueryRunner_1.LoggingQueryRunner {
constructor(queryRunner, opts) {
const logEnd = opts?.logResults || opts?.logDurations || opts?.logTimestamps;
const timeGranularity = opts?.timeGranularity ?? 'ms';
super({
onQuery: (queryType, query, params, timestamps) => {
const phase = opts?.includeLogPhase ? ' (onQuery)' : '';
const ts = opts?.logTimestamps
? `[${formatDuration(timestamps.startedAt, timeGranularity)}] `
: '';
const separator = opts?.logTimestamps ? ' ' : '';
if (opts?.paramsAsObject) {
console.log(`${ts}${separator}${queryType}${phase}`, { query, params });
}
else {
console.log(`${ts}${separator}${queryType}${phase}`, query, params);
}
},
onQueryResult: logEnd ? (queryType, query, params, result, timestamps) => {
const phase = opts?.includeLogPhase ? ' (onQueryResult)' : '';
const ts = opts?.logTimestamps
? `[${formatDuration(timestamps.endedAt, timeGranularity)}]`
: '';
const duration = opts?.logDurations
? `[Took ${formatDuration(timestamps.endedAt - timestamps.startedAt, timeGranularity)}${timeGranularity}]`
: '';
const separator = opts?.logTimestamps || opts?.logDurations ? ' ' : '';
if (opts?.logResults) {
if (opts?.paramsAsObject) {
console.log(`${ts}${duration}${separator}${queryType}${phase}`, { query, params });
}
else {
console.log(`${ts}${duration}${separator}${queryType}${phase}`, query, params);
}
}
else {
if (opts?.paramsAsObject) {
console.log(`${ts}${duration}${separator}${queryType}${phase}`, { query, params, result });
}
else {
console.log(`${ts}${duration}${separator}${queryType}${phase}`, query, params, result);
}
}
} : undefined,
onQueryError: logEnd ? (queryType, query, params, error, timestamps) => {
const phase = opts?.includeLogPhase ? ' (onQueryError)' : '';
const ts = opts?.logTimestamps
? `[${formatDuration(timestamps.endedAt, timeGranularity)}]`
: '';
const duration = opts?.logDurations
? `[Took ${formatDuration(timestamps.endedAt - timestamps.startedAt, timeGranularity)}${timeGranularity}]`
: '';
const separator = opts?.logTimestamps || opts?.logDurations ? ' ' : '';
if (opts?.paramsAsObject) {
console.log(`${ts}${duration}${separator}${queryType}${phase}`, { query, params, error });
}
else {
console.log(`${ts}${duration}${separator}${queryType}${phase}`, query, params, error);
}
} : undefined
}, queryRunner);
}
}
exports.ConsoleLogQueryRunner = ConsoleLogQueryRunner;
const formatDuration = (durationNS, granularity) => {
switch (granularity) {
case 'ns': return durationNS;
case 'us': return durationNS / 1000n;
case 'ms': return durationNS / 1000000n;
}
};