UNPKG

@bytebase/dbhub

Version:

Token-efficient database MCP server for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite

36 lines (34 loc) • 1 kB
// src/utils/identifier-quoter.ts function quoteIdentifier(identifier, dbType) { if (/[\0\x08\x09\x1a\n\r]/.test(identifier)) { throw new Error(`Invalid identifier: contains control characters: ${identifier}`); } if (!identifier) { throw new Error("Identifier cannot be empty"); } switch (dbType) { case "postgres": case "sqlite": case "oracle": return `"${identifier.replace(/"/g, '""')}"`; case "mysql": case "mariadb": return `\`${identifier.replace(/`/g, "``")}\``; case "sqlserver": return `[${identifier.replace(/]/g, "]]")}]`; default: return `"${identifier.replace(/"/g, '""')}"`; } } function quoteQualifiedIdentifier(tableName, schemaName, dbType) { const quotedTable = quoteIdentifier(tableName, dbType); if (schemaName) { const quotedSchema = quoteIdentifier(schemaName, dbType); return `${quotedSchema}.${quotedTable}`; } return quotedTable; } export { quoteIdentifier, quoteQualifiedIdentifier };