UNPKG

@electric-sql/drivers

Version:

ElectricSQL database drivers.

49 lines 1.29 kB
import pg from "pg"; import { SerialDatabaseAdapter as GenericDatabaseAdapter } from "../generic/adapter.js"; const originalGetTypeParser = pg.types.getTypeParser; class DatabaseAdapter extends GenericDatabaseAdapter { db; defaultNamespace = "public"; constructor(db) { super(); this.db = db; } async _run(statement) { const { rowsModified } = await this.exec(statement); return { rowsAffected: rowsModified }; } async _query(statement) { const { rows } = await this.exec(statement); return rows; } async exec(statement) { const { rows, rowCount } = await this.db.query({ text: statement.sql, values: statement.args, types: { getTypeParser: (oid) => { if (oid === pg.types.builtins.TIMESTAMP || oid === pg.types.builtins.TIMESTAMPTZ || oid === pg.types.builtins.DATE) { return parseDate; } return originalGetTypeParser(oid); } } }); return { rows, rowsModified: rowCount ?? 0 }; } } function parseDate(v) { const millis = Date.parse(v); if (isNaN(millis)) throw new Error(`Could not parse date, invalid format: ${v}`); else return new Date(millis); } export { DatabaseAdapter }; //# sourceMappingURL=adapter.js.map