cassandra-driver
Version:
DataStax Node.js Driver for Apache Cassandra
80 lines (75 loc) • 2.12 kB
JavaScript
/*
* Copyright DataStax, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
;
/** @module types */
/**
* Represents a result row
* @param {Array} columns
* @constructor
*/
function Row(columns) {
if (!columns) {
throw new Error('Columns not defined');
}
//Private non-enumerable properties, with double underscore to avoid interfering with column names
Object.defineProperty(this, '__columns', { value: columns, enumerable: false, writable: false});
}
/**
* Returns the cell value.
* @param {String|Number} columnName Name or index of the column
*/
Row.prototype.get = function (columnName) {
if (typeof columnName === 'number') {
//its an index
return this[this.__columns[columnName].name];
}
return this[columnName];
};
/**
* Returns an array of the values of the row
* @returns {Array}
*/
Row.prototype.values = function () {
const valuesArray = [];
this.forEach(function (val) {
valuesArray.push(val);
});
return valuesArray;
};
/**
* Returns an array of the column names of the row
* @returns {Array}
*/
Row.prototype.keys = function () {
const keysArray = [];
this.forEach(function (val, key) {
keysArray.push(key);
});
return keysArray;
};
/**
* Executes the callback for each field in the row, containing the value as first parameter followed by the columnName
* @param {Function} callback
*/
Row.prototype.forEach = function (callback) {
for (const columnName in this) {
if (!this.hasOwnProperty(columnName)) {
continue;
}
callback(this[columnName], columnName);
}
};
module.exports = Row;