Module: Quandl::Cassandra::Base::Connection::ClassMethods
- Defined in:
- lib/quandl/cassandra/base/connection.rb
Instance Method Summary collapse
- #connection ⇒ Object
- #consistency ⇒ Object
- #delete(*ids) ⇒ Object
- #establish_connection ⇒ Object
- #execute(statement, consist = nil) ⇒ Object
- #execute_async(statement, consist = nil) ⇒ Object
- #prepare(statement) ⇒ Object
- #rescue_and_retry(times, &block) ⇒ Object
- #reset_connection ⇒ Object
- #truncate ⇒ Object
- #with_connection(&block) ⇒ Object
Instance Method Details
#connection ⇒ Object
71 72 73 |
# File 'lib/quandl/cassandra/base/connection.rb', line 71 def connection @@connection ||= establish_connection end |
#consistency ⇒ Object
75 76 77 |
# File 'lib/quandl/cassandra/base/connection.rb', line 75 def consistency Quandl::Cassandra.configuration.consistency end |
#delete(*ids) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/quandl/cassandra/base/connection.rb', line 11 def delete(*ids) statement = prepare("DELETE FROM #{table_name} WHERE id = ?") Array(ids).flatten. collect{|id| statement.async.execute(id, consistency) }. collect(&:value) end |
#establish_connection ⇒ Object
85 86 87 88 89 90 91 92 93 |
# File 'lib/quandl/cassandra/base/connection.rb', line 85 def establish_connection c = Cql::Client.connect( hosts: Quandl::Cassandra.configuration.hosts, consistency: Quandl::Cassandra.configuration.consistency ) # switch keyspace c.use( Quandl::Cassandra.configuration.keyspace ) if Quandl::Cassandra.configuration.keyspace.present? @@connection = c c end |
#execute(statement, consist = nil) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/quandl/cassandra/base/connection.rb', line 35 def execute(statement, consist = nil) consist = consistency unless consist.present? with_connection do |c| c.execute( statement, consist ) end rescue Cql::QueryError raise $!, "#{$!}\n statement: #{statement}", $!.backtrace end |
#execute_async(statement, consist = nil) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/quandl/cassandra/base/connection.rb', line 26 def execute_async(statement, consist = nil) consist = consistency unless consist.present? with_connection do |c| c.async.execute( statement, consist ) end rescue Cql::QueryError raise $!, "#{$!}\n statement: #{statement}", $!.backtrace end |
#prepare(statement) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/quandl/cassandra/base/connection.rb', line 18 def prepare(statement) with_connection do |c| c.prepare(statement) end rescue Cql::QueryError raise $!, "#{$!}\n statement: #{statement}", $!.backtrace end |
#rescue_and_retry(times, &block) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/quandl/cassandra/base/connection.rb', line 50 def rescue_and_retry(times, &block) block.call(connection) rescue Cql::QueryError => err #puts "ERROR: #{err.code} #{err}\n cql: '#{err.cql}'" Quandl::Logger.error("#{err.code} '#{err.cql}' #{$!}") # raise error if it's failed three times raise( $!, "#{err.code} '#{err.cql}' #{$!}", $!.backtrace ) if times <= 1 # otherwise rescue and retry rescue_and_retry(times - 1, &block) rescue Cql::Io::ConnectionError, Cql::NotConnectedError => err #puts "ERROR: #{err}" Quandl::Logger.error(err) reset_connection raise if times <= 1 rescue_and_retry(times - 1, &block) end |
#reset_connection ⇒ Object
79 80 81 82 83 |
# File 'lib/quandl/cassandra/base/connection.rb', line 79 def reset_connection connection.close @@connection = establish_connection true end |
#truncate ⇒ Object
7 8 9 |
# File 'lib/quandl/cassandra/base/connection.rb', line 7 def truncate execute("TRUNCATE #{table_name}") end |
#with_connection(&block) ⇒ Object
44 45 46 47 48 |
# File 'lib/quandl/cassandra/base/connection.rb', line 44 def with_connection(&block) rescue_and_retry(2) do block.call(connection) end end |