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;
|
||
|
});
|