Class: CassandraObject::Adapters::CassandraAdapter::QueryBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/cassandra_object/adapters/cassandra_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(adapter, scope) ⇒ QueryBuilder

Returns a new instance of QueryBuilder.



5
6
7
8
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 5

def initialize(adapter, scope)
  @adapter  = adapter
  @scope    = scope
end

Instance Method Details

#limit_stringObject



38
39
40
41
42
43
44
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 38

def limit_string
  if @scope.limit_value
    "LIMIT #{@scope.limit_value}"
  else
    ""
  end
end

#select_stringObject



19
20
21
22
23
24
25
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 19

def select_string
  if @scope.select_values.any?
    (['KEY'] | @scope.select_values) * ','
  else
    '*'
  end
end

#to_queryObject



10
11
12
13
14
15
16
17
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 10

def to_query
  [
    "SELECT #{select_string} FROM #{@scope.klass.column_family}",
    @adapter.write_option_string,
    where_string,
    limit_string
  ].delete_if(&:blank?) * ' '
end

#where_stringObject



27
28
29
30
31
32
33
34
35
36
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 27

def where_string
  wheres = @scope.where_values.dup
  if @scope.id_values.any?
    wheres << @adapter.create_ids_where_clause(@scope.id_values)
  end

  if wheres.any?
    "WHERE #{wheres * ' AND '}"
  end
end