@bhagat-surya-dev/dashchat-database-manager
Version:
AI-powered database schema analysis and management library
71 lines • 3.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SqliteHandler = exports.MongoDbHandler = exports.MariaDbHandler = exports.MySqlHandler = exports.PostgresHandler = exports.BaseDatabaseHandler = exports.LogLevel = void 0;
exports.createDatabaseHandler = createDatabaseHandler;
exports.getDatabaseTypeFromUrl = getDatabaseTypeFromUrl;
// Export all database handlers
const base_handler_1 = require("./base-handler");
Object.defineProperty(exports, "BaseDatabaseHandler", { enumerable: true, get: function () { return base_handler_1.BaseDatabaseHandler; } });
const base_handler_2 = require("./base-handler");
Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return base_handler_2.LogLevel; } });
const postgres_handler_1 = require("./postgres-handler");
Object.defineProperty(exports, "PostgresHandler", { enumerable: true, get: function () { return postgres_handler_1.PostgresHandler; } });
const mysql_handler_1 = require("./mysql-handler");
Object.defineProperty(exports, "MySqlHandler", { enumerable: true, get: function () { return mysql_handler_1.MySqlHandler; } });
Object.defineProperty(exports, "MariaDbHandler", { enumerable: true, get: function () { return mysql_handler_1.MariaDbHandler; } });
const mongodb_handler_1 = require("./mongodb-handler");
Object.defineProperty(exports, "MongoDbHandler", { enumerable: true, get: function () { return mongodb_handler_1.MongoDbHandler; } });
const sqlite_handler_1 = require("./sqlite-handler");
Object.defineProperty(exports, "SqliteHandler", { enumerable: true, get: function () { return sqlite_handler_1.SqliteHandler; } });
/**
* Factory function to create the appropriate handler for a database type
*/
/**
* Factory function to create the appropriate handler for a database type
*/
function createDatabaseHandler(type, options) {
switch (type.toLowerCase()) {
case 'postgres':
case 'postgresql':
return new postgres_handler_1.PostgresHandler(options);
case 'mysql':
return new mysql_handler_1.MySqlHandler("mysql", options);
case 'mariadb':
return new mysql_handler_1.MySqlHandler("mariadb", options);
case 'mongodb':
return new mongodb_handler_1.MongoDbHandler(options);
case 'sqlite':
return new sqlite_handler_1.SqliteHandler(options);
default:
throw new Error(`Unsupported database type: ${type}`);
}
}
/**
* Utility function to determine database type from URL
*/
function getDatabaseTypeFromUrl(url) {
if (!url)
return null;
try {
const urlObj = new URL(url);
// Map of protocols to database types
const PROTOCOLS = {
'postgresql:': 'postgres',
'postgres:': 'postgres',
'mysql:': 'mysql',
'mariadb:': 'mariadb',
'mongodb:': 'mongodb', 'mongodb+srv:': 'mongodb', // For MongoDB Atlas
'sqlite:': 'sqlite'
};
return PROTOCOLS[urlObj.protocol] || null;
}
catch (error) {
// If URL parsing fails, try to infer from file extension for SQLite
console.debug('Failed to parse URL for protocol detection:', error);
if (url.endsWith('.db') || url.endsWith('.sqlite') || url.endsWith('.sqlite3')) {
return 'sqlite';
}
return null;
}
}
//# sourceMappingURL=index.js.map