var Result = require('./result'); /** * This class stores the database results. */ module.exports = new Class({ results: null ,error: null /** * Initilizes the resultset object. */ ,initialize: function(results, error) { this.results = results; this.error = error; } /** * Gets the query error. * * @return {Db.Err} the error or null if no errors hapened */ ,getError: function() { return this.error; } ,fetch: function() { if (this.error) throw this.error; if (this.results !== null && this.results.length > 0) return this.results.shift(); return null; } /** * Fetchs the next result from the resultset. * * @return {Db.Result} the result or %null if error or there are no more results */ ,fetchResult: function() { var result = this.fetch(); if (result !== null) { if (result.data instanceof Array) return new Result(result); else return true; } return null; } /** * Fetchs the first row object from the next resultset. * * @return {Array} the row if success, %null otherwise */ ,fetchObject: function() { var result = this.fetch(); if (result !== null && result.data instanceof Array && result.data.length > 0) return result.data[0]; return null; } /** * Fetchs data from the next resultset. * * @return {Array} the data */ ,fetchData: function() { var result = this.fetch(); if (result !== null && result.data instanceof Array) return result.data; return null; } /** * Fetchs the first row and column value from the next resultset. * * @return {Object} the value if success, %null otherwise */ ,fetchValue: function() { var row = this.fetchRow(); if (row instanceof Array && row.length > 0) return row[0]; return null; } /** * Fetchs the first row from the next resultset. * * @return {Array} the row if success, %null otherwise */ ,fetchRow: function() { var result = this.fetch(); if (result !== null && result.data instanceof Array && result.data.length > 0) { var object = result.data[0]; var row = new Array(result.columns.length); for(var i = 0; i < row.length; i++) row[i] = object[result.columns[i].name]; return row; } return null; } });