Class: Cequel::Metal::Keyspace
- Inherits:
-
Object
- Object
- Cequel::Metal::Keyspace
- Extended by:
- Forwardable
- Includes:
- Logging, MonitorMixin
- Defined in:
- lib/cequel/metal/keyspace.rb
Overview
Handle to a Cassandra keyspace (database). Keyspace objects are factories for DataSet instances and provide a handle to a Schema::Keyspace instance.
Instance Attribute Summary collapse
-
#configuration ⇒ Hash
readonly
Configuration options for this keyspace.
-
#credentials ⇒ Hash
readonly
Credentials for connect to cassandra.
-
#default_consistency ⇒ Symbol
The default consistency for queries in this keyspace.
-
#hosts ⇒ Array<String>
readonly
List of hosts to connect to.
-
#name ⇒ String
readonly
Name of the keyspace.
-
#port ⇒ Object
readonly
Integer port to connect to Cassandra nodes on.
Class Method Summary collapse
-
.sanitize(statement, bind_vars) ⇒ String
Combine a statement with bind vars into a fully-fledged CQL query.
Instance Method Summary collapse
-
#[](table_name) ⇒ DataSet
Data set encapsulating table.
-
#batch { ... } ⇒ Object
Execute write operations in a batch.
-
#clear_active_connections! ⇒ void
Clears all active connections.
-
#client ⇒ Cql::Client::Client
private
The low-level client provided by the adapter.
-
#configure(configuration = {}) ⇒ void
Configure this keyspace from a hash of options.
-
#execute(statement, *bind_vars) ⇒ Enumerable
Execute a CQL query in this keyspace.
-
#execute_with_consistency(statement, bind_vars, consistency) ⇒ Enumerable
Execute a CQL query in this keyspace with the given consistency.
-
#initialize(configuration = {}) ⇒ Keyspace
constructor
private
A new instance of Keyspace.
-
#sanitize ⇒ String
Combine a statement with bind vars into a fully-fledged CQL query.
-
#schema ⇒ Schema::Keyspace
Schema object providing full read/write access to database schema.
-
#write(statement, *bind_vars) ⇒ void
Write data to this keyspace using a CQL query.
-
#write_with_consistency(statement, bind_vars, consistency) ⇒ void
Write data to this keyspace using a CQL query at the given consistency.
Methods included from Logging
Constructor Details
#initialize(configuration = {}) ⇒ Keyspace
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Keyspace.
88 89 90 91 |
# File 'lib/cequel/metal/keyspace.rb', line 88 def initialize(configuration={}) configure(configuration) @lock = Monitor.new end |
Instance Attribute Details
#configuration ⇒ Hash (readonly)
Returns configuration options for this keyspace.
17 18 19 |
# File 'lib/cequel/metal/keyspace.rb', line 17 def configuration @configuration end |
#credentials ⇒ Hash (readonly)
Returns credentials for connect to cassandra.
28 29 30 |
# File 'lib/cequel/metal/keyspace.rb', line 28 def credentials @credentials end |
#default_consistency ⇒ Symbol
Returns the default consistency for queries in this keyspace.
194 195 196 |
# File 'lib/cequel/metal/keyspace.rb', line 194 def default_consistency @default_consistency || :quorum end |
#hosts ⇒ Array<String> (readonly)
Returns list of hosts to connect to.
21 22 23 |
# File 'lib/cequel/metal/keyspace.rb', line 21 def hosts @hosts end |
#name ⇒ String (readonly)
Returns name of the keyspace.
19 20 21 |
# File 'lib/cequel/metal/keyspace.rb', line 19 def name @name end |
#port ⇒ Object (readonly)
Returns Integer port to connect to Cassandra nodes on.
23 24 25 |
# File 'lib/cequel/metal/keyspace.rb', line 23 def port @port end |
Class Method Details
.sanitize(statement, bind_vars) ⇒ String
Combine a statement with bind vars into a fully-fledged CQL query. This will no longer be needed once the CQL driver supports bound values natively.
71 72 73 74 |
# File 'lib/cequel/metal/keyspace.rb', line 71 def self.sanitize(statement, bind_vars) each_bind_var = bind_vars.each statement.gsub('?') { Type.quote(each_bind_var.next) } end |
Instance Method Details
#[](table_name) ⇒ DataSet
Returns data set encapsulating table.
136 137 138 |
# File 'lib/cequel/metal/keyspace.rb', line 136 def [](table_name) DataSet.new(table_name.to_sym, self) end |
#batch { ... } ⇒ Object
If this method is created while already in a batch of the same type (logged or unlogged), this method is a no-op.
Execute write operations in a batch. Any inserts, updates, and deletes inside this method’s block will be executed inside a CQL BATCH operation.
57 |
# File 'lib/cequel/metal/keyspace.rb', line 57 def_delegator :batch_manager, :batch |
#clear_active_connections! ⇒ void
This method returns an undefined value.
Clears all active connections
184 185 186 187 188 |
# File 'lib/cequel/metal/keyspace.rb', line 184 def clear_active_connections! if defined? @client remove_instance_variable(:@client) end end |
#client ⇒ Cql::Client::Client
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns the low-level client provided by the adapter.
145 146 147 |
# File 'lib/cequel/metal/keyspace.rb', line 145 def client synchronize { @client ||= build_client } end |
#configure(configuration = {}) ⇒ void
This method returns an undefined value.
Configure this keyspace from a hash of options
110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/cequel/metal/keyspace.rb', line 110 def configure(configuration = {}) if configuration.key?(:thrift) warn "Cequel no longer uses the Thrift transport to communicate " \ "with Cassandra. The :thrift option is deprecated and ignored." end @configuration = configuration @hosts, @port = extract_hosts_and_port(configuration) @credentials = extract_credentials(configuration) @name = configuration[:keyspace] # reset the connections clear_active_connections! end |
#execute(statement, *bind_vars) ⇒ Enumerable
Execute a CQL query in this keyspace
158 159 160 |
# File 'lib/cequel/metal/keyspace.rb', line 158 def execute(statement, *bind_vars) execute_with_consistency(statement, bind_vars, default_consistency) end |
#execute_with_consistency(statement, bind_vars, consistency) ⇒ Enumerable
Execute a CQL query in this keyspace with the given consistency
172 173 174 175 176 177 |
# File 'lib/cequel/metal/keyspace.rb', line 172 def execute_with_consistency(statement, bind_vars, consistency) log('CQL', statement, *bind_vars) do client.execute(sanitize(statement, bind_vars), consistency || default_consistency) end end |
#sanitize ⇒ String
Combine a statement with bind vars into a fully-fledged CQL query. This will no longer be needed once the CQL driver supports bound values natively.
80 |
# File 'lib/cequel/metal/keyspace.rb', line 80 def_delegator 'self.class', :sanitize |
#schema ⇒ Schema::Keyspace
Returns schema object providing full read/write access to database schema.
128 129 130 |
# File 'lib/cequel/metal/keyspace.rb', line 128 def schema Schema::Keyspace.new(self) end |
#write(statement, *bind_vars) ⇒ void
This method returns an undefined value.
Write data to this keyspace using a CQL query. Will be included the current batch operation if one is present.
39 |
# File 'lib/cequel/metal/keyspace.rb', line 39 def_delegator :write_target, :execute, :write |
#write_with_consistency(statement, bind_vars, consistency) ⇒ void
This method returns an undefined value.
Write data to this keyspace using a CQL query at the given consistency. Will be included the current batch operation if one is present.
50 51 |
# File 'lib/cequel/metal/keyspace.rb', line 50 def_delegator :write_target, :execute_with_consistency, :write_with_consistency |