48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
var textParsers = require('./lib/textParsers');
|
|
var binaryParsers = require('./lib/binaryParsers');
|
|
var arrayParser = require('./lib/arrayParser');
|
|
var builtinTypes = require('./lib/builtins');
|
|
|
|
exports.getTypeParser = getTypeParser;
|
|
exports.setTypeParser = setTypeParser;
|
|
exports.arrayParser = arrayParser;
|
|
exports.builtins = builtinTypes;
|
|
|
|
var typeParsers = {
|
|
text: {},
|
|
binary: {}
|
|
};
|
|
|
|
//the empty parse function
|
|
function noParse (val) {
|
|
return String(val);
|
|
};
|
|
|
|
//returns a function used to convert a specific type (specified by
|
|
//oid) into a result javascript type
|
|
//note: the oid can be obtained via the following sql query:
|
|
//SELECT oid FROM pg_type WHERE typname = 'TYPE_NAME_HERE';
|
|
function getTypeParser (oid, format) {
|
|
format = format || 'text';
|
|
if (!typeParsers[format]) {
|
|
return noParse;
|
|
}
|
|
return typeParsers[format][oid] || noParse;
|
|
};
|
|
|
|
function setTypeParser (oid, format, parseFn) {
|
|
if(typeof format == 'function') {
|
|
parseFn = format;
|
|
format = 'text';
|
|
}
|
|
typeParsers[format][oid] = parseFn;
|
|
};
|
|
|
|
textParsers.init(function(oid, converter) {
|
|
typeParsers.text[oid] = converter;
|
|
});
|
|
|
|
binaryParsers.init(function(oid, converter) {
|
|
typeParsers.binary[oid] = converter;
|
|
});
|