class Blazer::Adapters::CassandraAdapter

Public Instance Methods

preview_statement() click to toggle source
# File lib/blazer/adapters/cassandra_adapter.rb, line 29
def preview_statement
  "SELECT * FROM {table} LIMIT 10"
end
run_statement(statement, comment) click to toggle source
# File lib/blazer/adapters/cassandra_adapter.rb, line 4
def run_statement(statement, comment)
  columns = []
  rows = []
  error = nil

  begin
    response = session.execute("#{statement} /*#{comment}*/")
    rows = response.map { |r| r.values }
    columns = rows.any? ? response.first.keys : []
  rescue => e
    error = e.message
  end

  [columns, rows, error]
end
schema() click to toggle source
# File lib/blazer/adapters/cassandra_adapter.rb, line 24
def schema
  result = session.execute("SELECT keyspace_name, table_name, column_name, type, position FROM system_schema.columns WHERE keyspace_name = '#{keyspace}'")
  result.map(&:values).group_by { |r| [r[0], r[1]] }.map { |k, vs| {schema: k[0], table: k[1], columns: vs.sort_by { |v| v[2] }.map { |v| {name: v[2], data_type: v[3]} }} }
end
tables() click to toggle source
# File lib/blazer/adapters/cassandra_adapter.rb, line 20
def tables
  session.execute("SELECT table_name FROM system_schema.tables WHERE keyspace_name = '#{keyspace}'").map { |r| r["table_name"] }
end

Private Instance Methods

cluster() click to toggle source
# File lib/blazer/adapters/cassandra_adapter.rb, line 35
def cluster
  @cluster ||= begin
    require "cassandra"
    options = {hosts: [uri.host]}
    options[:port] = uri.port if uri.port
    options[:username] = uri.user if uri.user
    options[:password] = uri.password if uri.password
    ::Cassandra.cluster(options)
  end
end
keyspace() click to toggle source
# File lib/blazer/adapters/cassandra_adapter.rb, line 54
def keyspace
  @keyspace ||= uri.path[1..-1]
end
session() click to toggle source
# File lib/blazer/adapters/cassandra_adapter.rb, line 46
def session
  @session ||= cluster.connect(keyspace)
end
uri() click to toggle source
# File lib/blazer/adapters/cassandra_adapter.rb, line 50
def uri
  @uri ||= URI.parse(data_source.settings["url"])
end