postgrejs
Version:
Professional PostgreSQL client NodeJS
42 lines (41 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getParsers = getParsers;
const constants_js_1 = require("../constants.js");
const decode_binaryarray_js_1 = require("./decode-binaryarray.js");
const parse_array_js_1 = require("./parse-array.js");
const DefaultColumnParser = (v) => v;
function getParsers(typeMap, fields) {
const parsers = new Array(fields.length);
const l = fields.length;
let f;
let i;
for (i = 0; i < l; i++) {
f = fields[i];
const dataTypeReg = typeMap.get(f.dataTypeId);
if (dataTypeReg) {
const isArray = !!dataTypeReg.elementsOID;
if (f.format === constants_js_1.DataFormat.binary) {
const decode = dataTypeReg.parseBinary;
if (decode) {
parsers[i] = !isArray
? decode
: (v, options) => (0, decode_binaryarray_js_1.decodeBinaryArray)(v, decode, options);
}
}
else if (f.format === constants_js_1.DataFormat.text) {
const parse = dataTypeReg.parseText;
if (parse) {
parsers[i] = !isArray
? parse
: (v, options) => (0, parse_array_js_1.parsePostgresArray)(v, {
transform: x => parse(x, options),
separator: dataTypeReg.arraySeparator,
});
}
}
}
parsers[i] = parsers[i] || DefaultColumnParser;
}
return parsers;
}