UNPKG

@mikro-orm/postgresql

Version:

TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.

57 lines (56 loc) 2.04 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PostgreSqlConnection = void 0; const type_overrides_1 = __importDefault(require("pg/lib/type-overrides")); const postgres_array_1 = __importDefault(require("postgres-array")); const knex_1 = require("@mikro-orm/knex"); class PostgreSqlConnection extends knex_1.AbstractSqlConnection { createKnex() { this.client = this.createKnexClient(knex_1.PostgreSqlKnexDialect); this.client.client.ormConfig = this.config; this.connected = true; } getDefaultClientUrl() { return 'postgresql://postgres@127.0.0.1:5432'; } getConnectionOptions() { const ret = super.getConnectionOptions(); // use `select typname, oid, typarray from pg_type order by oid` to get the list of OIDs const types = new type_overrides_1.default(); [ 1082, // date 1114, // timestamp 1184, // timestamptz 1186, // interval ].forEach(oid => types.setTypeParser(oid, str => str)); [ 1182, // date[] 1115, // timestamp[] 1185, // timestamptz[] 1187, // interval[] ].forEach(oid => types.setTypeParser(oid, str => postgres_array_1.default.parse(str))); ret.types = types; return ret; } transformRawResult(res, method) { if (Array.isArray(res)) { return res.map(row => this.transformRawResult(row, method)); } if (method === 'get') { return res.rows[0]; } if (method === 'all') { return res.rows; } return { affectedRows: res.rowCount, insertId: res.rows[0] ? res.rows[0].id : 0, row: res.rows[0], rows: res.rows, }; } } exports.PostgreSqlConnection = PostgreSqlConnection;