@electric-sql/drivers
Version:
ElectricSQL database drivers.
49 lines • 1.29 kB
JavaScript
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