UNPKG

postgrejs

Version:

Professional PostgreSQL client NodeJS

39 lines (38 loc) 1.42 kB
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; }