/* * 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'; const util = require('util'); const events = require('events'); /** * Creates a new instance of DataCollection * @param {String} name Name of the data object. * @classdesc Describes a table or a view * @alias module:metadata~DataCollection * @constructor * @abstract */ function DataCollection(name) { events.EventEmitter.call(this); this.setMaxListeners(0); //private Object.defineProperty(this, 'loading', { value: false, enumerable: false, writable: true }); Object.defineProperty(this, 'loaded', { value: false, enumerable: false, writable: true }); /** * Name of the object * @type {String} */ this.name = name; /** * False-positive probability for SSTable Bloom filters. * @type {number} */ this.bloomFilterFalsePositiveChance = 0; /** * Level of caching: all, keys_only, rows_only, none * @type {String} */ this.caching = null; /** * A human readable comment describing the table. * @type {String} */ this.comment = null; /** * Specifies the time to wait before garbage collecting tombstones (deletion markers) * @type {number} */ this.gcGraceSeconds = 0; /** * Compaction strategy class used for the table. * @type {String} */ this.compactionClass = null; /** * Associative-array containing the compaction options keys and values. * @type {Object} */ this.compactionOptions = null; /** * Associative-array containing the compression options. * @type {Object} */ this.compression = null; /** * Specifies the probability of read repairs being invoked over all replicas in the current data center. * @type {number} */ this.localReadRepairChance = 0; /** * Specifies the probability with which read repairs should be invoked on non-quorum reads. The value must be * between 0 and 1. * @type {number} */ this.readRepairChance = 0; /** * An associative Array containing extra metadata for the table. *

* For Apache Cassandra versions prior to 3.0.0, this method always returns null. *

* @type {Object} */ this.extensions = null; /** * When compression is enabled, this option defines the probability * with which checksums for compressed blocks are checked during reads. * The default value for this options is 1.0 (always check). *

* For Apache Cassandra versions prior to 3.0.0, this method always returns null. *

* @type {Number|null} */ this.crcCheckChance = null; /** * Whether the populate I/O cache on flush is set on this table. * @type {Boolean} */ this.populateCacheOnFlush = false; /** * Returns the default TTL for this table. * @type {Number} */ this.defaultTtl = 0; /** * * Returns the speculative retry option for this table. * @type {String} */ this.speculativeRetry = 'NONE'; /** * Returns the minimum index interval option for this table. *

* Note: this option is available in Apache Cassandra 2.1 and above, and will return null for * earlier versions. *

* @type {Number|null} */ this.minIndexInterval = 128; /** * Returns the maximum index interval option for this table. *

* Note: this option is available in Apache Cassandra 2.1 and above, and will return null for * earlier versions. *

* @type {Number|null} */ this.maxIndexInterval = 2048; /** * Array describing the table columns. * @type {Array} */ this.columns = null; /** * An associative Array of columns by name. * @type {Object} */ this.columnsByName = null; /** * Array describing the columns that are part of the partition key. * @type {Array} */ this.partitionKeys = []; /** * Array describing the columns that form the clustering key. * @type {Array} */ this.clusteringKeys = []; /** * Array describing the clustering order of the columns in the same order as the clusteringKeys. * @type {Array} */ this.clusteringOrder = []; /** * An associative Array containing nodesync options for this table. *

* For DSE versions prior to 6.0.0, this method always returns {@code null}. If nodesync * was not explicitly configured for this table this method will also return {@code null}. *

* @type {Object} */ this.nodesync = null; } util.inherits(DataCollection, events.EventEmitter); module.exports = DataCollection;