class DatastaxRails::Cql::Select
CQL generation for SELECT
Public Class Methods
new(klass, select)
click to toggle source
Calls superclass method
DatastaxRails::Cql::Base::new
# File lib/datastax_rails/cql/select.rb, line 5 def initialize(klass, select) @select = select.join(',') @limit = nil @conditions = {} @order = nil @paginate = nil @allow_filtering = nil super end
Public Instance Methods
allow_filtering()
click to toggle source
# File lib/datastax_rails/cql/select.rb, line 15 def allow_filtering @allow_filtering = true self end
conditions(conditions)
click to toggle source
# File lib/datastax_rails/cql/select.rb, line 25 def conditions(conditions) @conditions.merge!(conditions) self end
limit(limit)
click to toggle source
# File lib/datastax_rails/cql/select.rb, line 30 def limit(limit) @limit = limit self end
order(order)
click to toggle source
# File lib/datastax_rails/cql/select.rb, line 35 def order(order) @order = order self end
paginate(start)
click to toggle source
# File lib/datastax_rails/cql/select.rb, line 20 def paginate(start) @paginate = start self end
to_cql()
click to toggle source
# File lib/datastax_rails/cql/select.rb, line 40 def to_cql conditions = [] stmt = "SELECT #{@select} FROM #{@klass.column_family} " if @paginate conditions << "token(#{@klass.primary_key}) > token(?)" @values << @paginate end @conditions.each do |k, v| if k.to_s == @klass.primary_key && v.is_a?(Array) conditions << "\"#{k}\" IN (#{('?' * v.size).split(//).join(',')})" @values += v else v = v.first if v.is_a?(Array) conditions << "\"#{k}\" = ?" @values << v end end stmt << "WHERE #{conditions.join(' AND ')} " unless conditions.empty? stmt << "ORDER BY #{@order} " if @order stmt << "LIMIT #{@limit} " if @limit stmt << 'ALLOW FILTERING ' if @allow_filtering stmt end