UNPKG

longcelot-sheet-db

Version:

Google Sheets-backed staging database adapter for Node.js with schema-first design

48 lines 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MySQLDialect = exports.PostgresDialect = void 0; function errorCode(err) { if (typeof err !== 'object' || err === null || !('code' in err)) return undefined; return String(err.code); } exports.PostgresDialect = { name: 'postgres', quoteIdent: (name) => `"${name.replace(/"/g, '""')}"`, placeholder: (index) => `$${index}`, booleanLiteral: (value) => value, limitOffsetClause: (limit, offset) => { const parts = []; if (limit !== undefined) parts.push(`LIMIT ${limit}`); if (offset !== undefined) parts.push(`OFFSET ${offset}`); return parts.join(' '); }, // https://www.postgresql.org/docs/current/errcodes-appendix.html isUniqueViolation: (err) => errorCode(err) === '23505', isFKViolation: (err) => errorCode(err) === '23503', }; exports.MySQLDialect = { name: 'mysql', quoteIdent: (name) => `\`${name.replace(/`/g, '``')}\``, placeholder: () => '?', booleanLiteral: (value) => (value ? 1 : 0), limitOffsetClause: (limit, offset) => { if (limit === undefined && offset === undefined) return ''; // MySQL's LIMIT/OFFSET requires a LIMIT to use OFFSET; use MySQL's own documented // "effectively unlimited" sentinel when only an offset was requested. const effectiveLimit = limit ?? 18446744073709551615; const parts = [`LIMIT ${effectiveLimit}`]; if (offset !== undefined) parts.push(`OFFSET ${offset}`); return parts.join(' '); }, isUniqueViolation: (err) => errorCode(err) === 'ER_DUP_ENTRY', isFKViolation: (err) => errorCode(err) === 'ER_NO_REFERENCED_ROW' || errorCode(err) === 'ER_NO_REFERENCED_ROW_2' || errorCode(err) === 'ER_ROW_IS_REFERENCED' || errorCode(err) === 'ER_ROW_IS_REFERENCED_2', }; //# sourceMappingURL=dialect.js.map