Class: CassandraObject::CounterBase

Inherits:
Object
  • Object
show all
Extended by:
ActiveModel::Naming, ActiveSupport::DescendantsTracker, Model
Includes:
ActiveModel::Conversion, Connection, Identity, Inspect
Defined in:
lib/cassandra_object/counter_base.rb

Class Method Summary collapse

Methods included from Model

base_class, column_family, column_family=, config, config=

Methods included from Inspect

#attribute_for_inspect, #inspect

Class Method Details

.base_classObject



4
5
6
# File 'lib/cassandra_object/counter_base.rb', line 4

def base_class
  self
end

.configObject



8
9
10
# File 'lib/cassandra_object/counter_base.rb', line 8

def config
  Base.config
end

.cqlObject



33
34
35
# File 'lib/cassandra_object/counter_base.rb', line 33

def cql
  @@cql ||= CassandraObject::Base.adapter.connection
end

.execute_cql(cql_string, *bind_vars) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/cassandra_object/counter_base.rb', line 37

def execute_cql(cql_string, *bind_vars)
  statement = CassandraCQL::Statement.sanitize(cql_string, bind_vars).force_encoding(Encoding::UTF_8)

  ActiveSupport::Notifications.instrument("cql.cassandra_object", cql: statement) do
    cql.execute statement
  end
end

.get(group, counter = nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/cassandra_object/counter_base.rb', line 12

def get(group, counter=nil)
  cql_string = "SELECT #{select_counter(counter)} FROM #{column_family} WHERE KEY = ?" # Multiple keys at once doesn't result right

  results = []
  attributes = execute_cql(cql_string, group).fetch_hash
  attributes.delete("KEY")
  results << attributes

  if !group.is_a?(Array) && results.size <= 1
    results = results.first
    if counter && !counter.is_a?(Array) && results.size <= 1
      results = results.values.first
    end
  end
  results
end

.update(group, counter, count = nil) ⇒ Object



29
30
31
# File 'lib/cassandra_object/counter_base.rb', line 29

def update(group, counter, count=nil)
  execute_cql "UPDATE #{column_family} SET #{counter_updates(counter, count)} WHERE KEY = '#{group}'"
end