const Result = require('./result'); /** * This class stores the database results. */ module.exports = new Class({ results: null, error: null, /** * Initilizes the resultset object. */ initialize(results, error) { this.results = results; this.error = error; }, /** * Gets the query error. * * @return {Db.Err} the error or null if no errors hapened */ getError() { return this.error; }, fetch() { if (this.error) { throw this.error; } console.log('this.results', this.results); 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() { const result = this.fetch(); console.log('test result', result); 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() { const 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() { const 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() { const 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() { const result = this.fetch(); if ( result !== null && result.data instanceof Array && result.data.length > 0 ) { const object = result.data[0]; const row = new Array(result.columns.length); for (let i = 0; i < row.length; i++) { row[i] = object[result.columns[i].name]; } return row; } return null; } });