UNPKG

cassandra-driver

Version:

DataStax Node.js Driver for Apache Cassandra

80 lines (75 loc) 2.12 kB
/* * 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. */ 'use strict'; /** @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;