1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /*
- * Copyright (c) 2015-present, Vitaly Tomilov
- *
- * See the LICENSE file at the top-level directory of this distribution
- * for licensing information.
- *
- * Removal or modification of this copyright notice is prohibited.
- */
- const {QueryFileError} = require('./query-file-error');
- const npm = {
- os: require('os'),
- utils: require('../utils')
- };
- /**
- * @class errors.ParameterizedQueryError
- * @augments external:Error
- * @description
- * {@link errors.ParameterizedQueryError ParameterizedQueryError} class, available from the {@link errors} namespace.
- *
- * This type represents all errors that can be reported by class {@link ParameterizedQuery}, whether it is used
- * explicitly or implicitly (via a simple `{text, values}` object).
- *
- * @property {string} name
- * Standard {@link external:Error Error} property - error type name = `ParameterizedQueryError`.
- *
- * @property {string} message
- * Standard {@link external:Error Error} property - the error message.
- *
- * @property {string} stack
- * Standard {@link external:Error Error} property - the stack trace.
- *
- * @property {errors.QueryFileError} error
- * Internal {@link errors.QueryFileError} object.
- *
- * It is set only when the source {@link ParameterizedQuery} used a {@link QueryFile} which threw the error.
- *
- * @property {object} result
- * Resulting Parameterized Query object.
- *
- * @see ParameterizedQuery
- */
- class ParameterizedQueryError extends Error {
- constructor(error, pq) {
- const isQueryFileError = error instanceof QueryFileError;
- const message = isQueryFileError ? 'Failed to initialize \'text\' from a QueryFile.' : error;
- super(message);
- this.name = this.constructor.name;
- if (isQueryFileError) {
- this.error = error;
- }
- this.result = pq;
- Error.captureStackTrace(this, this.constructor);
- }
- }
- /**
- * @method errors.ParameterizedQueryError#toString
- * @description
- * Creates a well-formatted multi-line string that represents the error.
- *
- * It is called automatically when writing the object into the console.
- *
- * @param {number} [level=0]
- * Nested output level, to provide visual offset.
- *
- * @returns {string}
- */
- ParameterizedQueryError.prototype.toString = function (level) {
- level = level > 0 ? parseInt(level) : 0;
- const gap0 = npm.utils.messageGap(level),
- gap1 = npm.utils.messageGap(level + 1),
- gap2 = npm.utils.messageGap(level + 2),
- lines = [
- 'ParameterizedQueryError {',
- gap1 + 'message: "' + this.message + '"',
- gap1 + 'result: {',
- gap2 + 'text: ' + npm.utils.toJson(this.result.text),
- gap2 + 'values: ' + npm.utils.toJson(this.result.values),
- gap1 + '}'
- ];
- if (this.error) {
- lines.push(gap1 + 'error: ' + this.error.toString(level + 1));
- }
- lines.push(gap0 + '}');
- return lines.join(npm.os.EOL);
- };
- npm.utils.addInspection(ParameterizedQueryError, function () {
- return this.toString();
- });
- module.exports = {ParameterizedQueryError};
|