postgrejs
Version:
Professional PostgreSQL client NodeJS
39 lines (38 loc) • 1.42 kB
JavaScript
import { DataFormat } from '../constants.js';
import { decodeBinaryArray } from './decode-binaryarray.js';
import { parsePostgresArray } from './parse-array.js';
const DefaultColumnParser = (v) => v;
export 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 === DataFormat.binary) {
const decode = dataTypeReg.parseBinary;
if (decode) {
parsers[i] = !isArray
? decode
: (v, options) => decodeBinaryArray(v, decode, options);
}
}
else if (f.format === DataFormat.text) {
const parse = dataTypeReg.parseText;
if (parse) {
parsers[i] = !isArray
? parse
: (v, options) => parsePostgresArray(v, {
transform: x => parse(x, options),
separator: dataTypeReg.arraySeparator,
});
}
}
}
parsers[i] = parsers[i] || DefaultColumnParser;
}
return parsers;
}