Class: Cequel::Metal::Batch Private
- Inherits:
-
Object
- Object
- Cequel::Metal::Batch
- Defined in:
- lib/cequel/metal/batch.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Encapsulates a batch operation
Instance Method Summary collapse
-
#apply ⇒ Object
private
Send the batch to Cassandra.
-
#execute(statement) ⇒ Object
private
Add a statement to the batch.
- #execute_with_options(statement, options) ⇒ Object private
-
#initialize(keyspace, options = {}) ⇒ Batch
constructor
private
A new instance of Batch.
-
#logged? ⇒ Boolean
private
Is this a logged batch?.
- #on_complete(&block) ⇒ Object private
-
#unlogged? ⇒ Boolean
private
Is this an unlogged batch?.
Constructor Details
#initialize(keyspace, options = {}) ⇒ Batch
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 Batch.
27 28 29 30 31 32 33 34 35 |
# File 'lib/cequel/metal/batch.rb', line 27 def initialize(keyspace, = {}) .assert_valid_keys(:auto_apply, :unlogged, :consistency) @keyspace = keyspace @auto_apply = [:auto_apply] @unlogged = .fetch(:unlogged, false) @consistency = .fetch(:consistency, keyspace.default_consistency) reset end |
Instance Method Details
#apply ⇒ Object
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.
Send the batch to Cassandra
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/cequel/metal/batch.rb', line 53 def apply return if @statements.empty? statement = @statements.first if @statements.size > 1 statement = if logged? keyspace.client.logged_batch else keyspace.client.unlogged_batch end @statements.each { |s| statement.add(s.prepare(keyspace), arguments: s.bind_vars) } end keyspace.(statement, consistency: @consistency) execute_on_complete_hooks end |
#execute(statement) ⇒ Object
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.
Add a statement to the batch.
42 43 44 45 46 47 48 |
# File 'lib/cequel/metal/batch.rb', line 42 def execute(statement) @statements << statement if @auto_apply && @statements.size >= @auto_apply apply reset end end |
#execute_with_options(statement, options) ⇒ Object
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.
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/cequel/metal/batch.rb', line 93 def (statement, ) query_consistency = .fetch(:consistency) if query_consistency && query_consistency != @consistency raise ArgumentError, "Attempting to perform query with consistency " \ "#{query_consistency.to_s.upcase} in batch with consistency " \ "#{@consistency.upcase}" end execute(statement) end |
#logged? ⇒ Boolean
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.
Is this a logged batch?
88 89 90 |
# File 'lib/cequel/metal/batch.rb', line 88 def logged? !unlogged? end |
#on_complete(&block) ⇒ Object
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.
71 72 73 |
# File 'lib/cequel/metal/batch.rb', line 71 def on_complete(&block) on_complete_hooks << block end |
#unlogged? ⇒ Boolean
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.
Is this an unlogged batch?
79 80 81 |
# File 'lib/cequel/metal/batch.rb', line 79 def unlogged? @unlogged end |