db-conn-pgsql
Version:
Database Connecton Postgres SQL
80 lines • 2.26 kB
JavaScript
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