|
|
|
@ -34,41 +34,12 @@ var NativeQuery = function(config, values, callback) {
|
|
|
|
|
|
|
|
|
|
util.inherits(NativeQuery, EventEmitter);
|
|
|
|
|
|
|
|
|
|
//maps from native rowdata into api compatible row object
|
|
|
|
|
var mapRowData = function(row) {
|
|
|
|
|
var result = {};
|
|
|
|
|
for(var i = 0, len = row.length; i < len; i++) {
|
|
|
|
|
var item = row[i];
|
|
|
|
|
result[item.name] = item.value === null ? null :
|
|
|
|
|
types.getTypeParser(item.dataTypeID, 'text')(item.value);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
NativeQuery.prototype.handleRowDescription = function(rowDescription) {
|
|
|
|
|
//multiple query statements in 1 action can result in multiple sets
|
|
|
|
|
//of rowDescriptions...eg: 'select NOW(); select 1::int;'
|
|
|
|
|
if(this._result.fields.length) {
|
|
|
|
|
this._result.fields = [];
|
|
|
|
|
}
|
|
|
|
|
for(var i = 0, len = rowDescription.length; i < len; i++) {
|
|
|
|
|
this._result.addField(rowDescription[i]);
|
|
|
|
|
}
|
|
|
|
|
this._result.addFields(rowDescription);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
NativeQuery.prototype.handleRow = function(rowData) {
|
|
|
|
|
var row = {};
|
|
|
|
|
for(var i = 0, len = rowData.length; i < len; i++) {
|
|
|
|
|
var rawValue = rowData[i];
|
|
|
|
|
var field = this._result.fields[i];
|
|
|
|
|
var fieldType = field.dataTypeID;
|
|
|
|
|
var parsedValue = null;
|
|
|
|
|
if(rawValue !== null) {
|
|
|
|
|
parsedValue = types.getTypeParser(fieldType, 'text')(rawValue);
|
|
|
|
|
}
|
|
|
|
|
var fieldName = field.name;
|
|
|
|
|
row[fieldName] = parsedValue;
|
|
|
|
|
}
|
|
|
|
|
var row = this._result.parseRow(rowData);
|
|
|
|
|
if(this.callback) {
|
|
|
|
|
this._result.addRow(row);
|
|
|
|
|
}
|
|
|
|
|