@paroicms/internal-server-lib
Version: 
Common utilitaries for the paroicms server.
47 lines • 1.54 kB
JavaScript
export function createSqlLogger({ logger, dbSchemaName, }) {
    let debugCount = 0;
    const knexLogger = {
        debug(message) {
            if (debugCount <= 0)
                return;
            --debugCount;
            logger.debug(`[${dbSchemaName}] ${formatSqlQuery(message.sql)}${message.bindings
                ? `
  with bindings: ${message.bindings.map(parameterToString).join(", ")}`
                : ""}`);
        },
        error(message) {
            logger.error(`[${dbSchemaName}] sql error:`, message);
        },
        warn(message) {
            logger.warn(`[${dbSchemaName}] sql warning:`, message);
        },
        deprecate(method, alternative) {
            logger.warn(`[${dbSchemaName}] deprecated method ${method}, use ${alternative} instead`);
        },
    };
    return {
        knexLogger,
        logNextQuery(count = 1) {
            debugCount += count;
        },
    };
}
function formatSqlQuery(sql) {
    return sql.replaceAll("`", "");
}
function parameterToString(parameter) {
    if (parameter === undefined)
        return "undefined";
    if (parameter === null)
        return "null";
    const t = typeof parameter;
    if (t === "number" || t === "boolean" || t === "bigint")
        return parameter.toString();
    if (t === "symbol")
        return parameter.toString();
    if (t === "string")
        return JSON.stringify(parameter.length > 40 ? `${parameter.substring(0, 40)}…` : parameter);
    return t; // "object" or "function"
}
//# sourceMappingURL=sql-logger.js.map