UNPKG

@bhagat-surya-dev/dashchat-database-manager

Version:

AI-powered database schema analysis and management library

86 lines 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseDatabaseHandler = exports.LogLevel = void 0; var LogLevel; (function (LogLevel) { LogLevel["INFO"] = "INFO"; LogLevel["WARN"] = "WARN"; LogLevel["ERROR"] = "ERROR"; LogLevel["DEBUG"] = "DEBUG"; })(LogLevel || (exports.LogLevel = LogLevel = {})); // Abstract base class with common functionality class BaseDatabaseHandler { constructor(options) { this.timeout = options?.timeout ?? 30000; // Default 30 seconds this.maxSampleSize = options?.maxSampleSize ?? 5; // Default 5 sample rows this.loggerFn = options?.loggerFn; } // Helper method for timing out promises async withTimeout(promise, ms = this.timeout, errorMsg) { return new Promise((resolve, reject) => { const timer = setTimeout(() => { reject(new Error(errorMsg || `Operation timed out after ${ms} ms`)); }, ms); promise .then((value) => { clearTimeout(timer); resolve(value); }) .catch((err) => { clearTimeout(timer); reject(err); }); }); } // Logging methods log(level, context, message) { if (this.loggerFn) { this.loggerFn(level, context, message); } else { const formattedMessage = this.formatLogMessage(level, context, message); switch (level) { case LogLevel.ERROR: console.error(formattedMessage); break; case LogLevel.WARN: console.warn(formattedMessage); break; case LogLevel.DEBUG: console.debug(formattedMessage); break; default: console.log(formattedMessage); } } } formatLogMessage(level, context, message) { const timestamp = new Date().toISOString(); return JSON.stringify({ timestamp, level, method: context.method, action: context.action, message, duration: context.duration, ...context.metadata }); } logError(method, error, context) { const errorObject = error instanceof Error ? error : new Error(String(error)); this.log(LogLevel.ERROR, { method, action: 'error_handling', metadata: { errorName: errorObject.name, errorMessage: errorObject.message, errorStack: errorObject.stack, ...context } }, 'An error occurred'); } logInfo(method, message, data) { this.log(LogLevel.INFO, { method, metadata: data }, message); } } exports.BaseDatabaseHandler = BaseDatabaseHandler; //# sourceMappingURL=base-handler.js.map