Module: Believer::CqlHelper
- Included in:
- CreateTable, Insert, KeySpace, Update, WhereClause
- Defined in:
- lib/believer/cql_helper.rb
Overview
Contains various methods for dealing with CQL statements
Constant Summary collapse
- CQL_TIMESTAMP_FORMAT =
'%Y-%m-%d %H:%M:%S%z'
Instance Method Summary collapse
- #escape_special_chars(v) ⇒ Object
-
#to_cql_literal(value) ⇒ Object
Converts a value to a CQL literal.
- #to_cql_properties(properties) ⇒ Object
- #to_hex_literal(s) ⇒ Object
Instance Method Details
#escape_special_chars(v) ⇒ Object
57 58 59 |
# File 'lib/believer/cql_helper.rb', line 57 def escape_special_chars(v) v.gsub("'", "''") end |
#to_cql_literal(value) ⇒ Object
Converts a value to a CQL literal
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/believer/cql_helper.rb', line 12 def to_cql_literal(value) return 'NULL' if value.nil? return "'#{escape_special_chars(value)}'" if value.is_a?(String) return "'#{value}'" if value.is_a?(Symbol) return "#{value}" if value.is_a?(Numeric) return "'#{value.strftime(CQL_TIMESTAMP_FORMAT)}'" if value.is_a?(Time) || value.is_a?(DateTime) #return "#{value.to_i * 1000}" if value.is_a?(Time) || value.is_a?(DateTime) # Set if value.is_a?(Set) return "{#{value.map {|v| to_cql_literal(v)}.join(',')}}" end # Map if value.is_a?(Hash) keys = value.keys return "{#{keys.map {|k| "#{to_cql_literal(k)} : #{to_cql_literal(value[k])}" }.join(',')} }" end # List return "[#{value.map {|v| to_cql_literal(v)}.join(',')}]" if value.is_a?(Array) return nil end |
#to_cql_properties(properties) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/believer/cql_helper.rb', line 37 def to_cql_properties(properties) return '' if properties.nil? || properties.empty? props_s = properties.keys.map { |k| v = properties[k] v_s = nil if v.is_a?(Hash) v.each {|k, val| v[k] = escape_special_chars(val) if val.is_a?(String)} v_s = v.to_json.gsub(/\"/) { |m| "'" } elsif v.is_a?(String) v_s = "'#{escape_special_chars(v)}'" else v_s = escape_special_chars(v.to_s) end "#{k} = #{v_s}" }.join("\nAND ") props_s end |
#to_hex_literal(s) ⇒ Object
61 62 63 |
# File 'lib/believer/cql_helper.rb', line 61 def to_hex_literal(s) s.unpack('U'*s.length).map {|i|i.to_s(16)}.join() end |