UNPKG

query-analyzer

Version:

A utility for enhancing Sequelize queries with EXPLAIN options and logging detailed query plans.

86 lines (85 loc) 2.71 kB
"use strict"; /** * Custom error classes for Query Analyzer */ Object.defineProperty(exports, "__esModule", { value: true }); exports.ParseError = exports.QueryExecutionError = exports.CsvError = exports.ExplainError = exports.AnalyzerError = void 0; /** * Base error class for all analyzer errors */ class AnalyzerError extends Error { constructor(message, code, query, originalError) { super(message); this.name = 'AnalyzerError'; this.code = code; this.query = query; this.originalError = originalError; this.timestamp = new Date(); // Maintains proper stack trace for where our error was thrown (only available on V8) if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } } /** * Get a formatted error message */ getFormattedMessage() { return `[${this.code}] ${this.message}\n\tQuery: ${this.query}\n\tTime: ${this.timestamp.toISOString()}`; } /** * Convert error to JSON */ toJSON() { var _a; return { name: this.name, code: this.code, message: this.message, query: this.query, timestamp: this.timestamp.toISOString(), originalError: (_a = this.originalError) === null || _a === void 0 ? void 0 : _a.message, stack: this.stack }; } } exports.AnalyzerError = AnalyzerError; /** * Error thrown when EXPLAIN analysis fails */ class ExplainError extends AnalyzerError { constructor(query, originalError) { super('Failed to analyze query with EXPLAIN', 'EXPLAIN_FAILED', query, originalError); this.name = 'ExplainError'; } } exports.ExplainError = ExplainError; /** * Error thrown when CSV logging fails */ class CsvError extends AnalyzerError { constructor(query, originalError) { super('Failed to log query analysis to CSV', 'CSV_WRITE_FAILED', query, originalError); this.name = 'CsvError'; } } exports.CsvError = CsvError; /** * Error thrown when query execution fails */ class QueryExecutionError extends AnalyzerError { constructor(query, originalError) { super('Query execution failed', 'QUERY_EXECUTION_FAILED', query, originalError); this.name = 'QueryExecutionError'; } } exports.QueryExecutionError = QueryExecutionError; /** * Error thrown when query plan parsing fails */ class ParseError extends AnalyzerError { constructor(query, field, originalError) { super(`Failed to parse ${field} from query plan`, 'PARSE_FAILED', query, originalError); this.name = 'ParseError'; } } exports.ParseError = ParseError;