UNPKG

db-conn-pgsql

Version:

Database Connecton Postgres SQL

80 lines 2.26 kB
import { SQLType } from "db-conn"; export function toAnsiTypeColumns(metadata) { const rt = []; for (let mField of metadata) { const field = {}; field.name = mField.name; field.type = toAnsiType(mField.dataTypeID); rt.push(field); } return rt; } export function toAnsiType(dataTypeID) { switch (dataTypeID) { case 23: return SQLType.i32; case 1043: return SQLType.varchar; case 1700: return SQLType.decimal; case 701: return SQLType.f64; case 1114: return SQLType.datetime; case 1082: return SQLType.date; case 1083: return SQLType.time; case 25: return SQLType.text; case 17: return SQLType.blob; } return "unknown"; } export function toAnsiValueRows(rows, metadata) { const rt = []; for (let row of rows) { const newRow = {}; for (let field of metadata) { const value = row[field.name]; newRow[field.name] = toAnsiValue(value, field.type); } rt.push(newRow); } return rt; } export function toAnsiValue(value, type) { if (value === undefined || value === null) { return value; } let rt = null; let offset = null; switch (type) { case SQLType.i32: case SQLType.varchar: case SQLType.decimal: case SQLType.f64: case SQLType.text: return value; case SQLType.datetime: offset = value.getTimezoneOffset(); value = new Date(value.getTime() - (offset * 60 * 1000)); rt = value.toISOString(); rt = rt.substring(0, rt.length - 1); rt = rt.split('T').join(' '); return rt; case SQLType.date: offset = value.getTimezoneOffset(); value = new Date(value.getTime() - (offset * 60 * 1000)); rt = value.toISOString().split("T")[0]; return rt; case SQLType.time: return value; case SQLType.blob: return value.toString(); default: return value; } } //# sourceMappingURL=PgSqlUtils.js.map