//result object returned from query
//in the 'end' event and also
//passed as second argument to provided callback
var Result = function() {
  this.command = null;
  this.rowCount = null;
  this.oid = null;
  this.rows = [];
};

var matchRegexp = /([A-Za-z]+) (\d+ )?(\d+)?/;

//adds a command complete message
Result.prototype.addCommandComplete = function(msg) {
  var match;
  if(msg.text) {
    //pure javascript
    match = matchRegexp.exec(msg.text);
  } else {
    //native bindings
    match = matchRegexp.exec(msg.command);
  }
  if(match) {
    this.command = match[1];
    //match 3 will only be existing on insert commands
    if(match[3]) {
      //msg.value is from native bindings
      this.rowCount = parseInt(match[3] || msg.value, 10);
      this.oid = parseInt(match[2], 10);
    } else {
      this.rowCount = parseInt(match[2], 10);
    }
  }
};

Result.prototype.addRow = function(row) {
  this.rows.push(row);
};

module.exports = Result;
