Class: CassandraObject::Adapters::CassandraAdapter::QueryBuilder
- Inherits:
-
Object
- Object
- CassandraObject::Adapters::CassandraAdapter::QueryBuilder
- Defined in:
- lib/cassandra_object/adapters/cassandra_adapter.rb
Instance Method Summary collapse
- #escape_where_value(value) ⇒ Object
- #format_where_statement(where_value) ⇒ Object
-
#initialize(adapter, scope) ⇒ QueryBuilder
constructor
A new instance of QueryBuilder.
- #limit_string ⇒ Object
- #select_string ⇒ Object
- #to_query ⇒ Object
- #where_string ⇒ Object
Constructor Details
#initialize(adapter, scope) ⇒ QueryBuilder
Returns a new instance of QueryBuilder.
27 28 29 30 |
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 27 def initialize(adapter, scope) @adapter = adapter @scope = scope end |
Instance Method Details
#escape_where_value(value) ⇒ Object
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 77 def escape_where_value(value) if value.is_a?(Array) value.map { |v| escape_where_value(v) }.join(",") elsif value.is_a?(String) value = value.gsub("'", "''") "'#{value}'" else value end end |
#format_where_statement(where_value) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 63 def format_where_statement(where_value) if where_value.is_a?(String) [where_value] elsif where_value.is_a?(Hash) where_value.map do |column, value| if value.is_a?(Array) "#{column} IN (#{escape_where_value(value)})" else "#{column} = #{escape_where_value(value)}" end end end end |
#limit_string ⇒ Object
88 89 90 91 92 93 94 |
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 88 def limit_string if @scope.limit_value "LIMIT #{@scope.limit_value}" else "" end end |
#select_string ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 41 def select_string if @scope.select_values.any? (['KEY'] | @scope.select_values) * ',' else '*' end end |
#to_query ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 32 def to_query [ "SELECT #{select_string} FROM #{@scope.klass.column_family}", @adapter.write_option_string, where_string, limit_string ].delete_if(&:blank?) * ' ' end |
#where_string ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/cassandra_object/adapters/cassandra_adapter.rb', line 49 def where_string if @scope.where_values.any? wheres = [] @scope.where_values.map do |where_value| wheres.concat format_where_statement(where_value) end "WHERE #{wheres * ' AND '}" else '' end end |