Class: CassandraModel::QueryBuilder
- Inherits:
-
Object
- Object
- CassandraModel::QueryBuilder
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/cassandra_model/query_builder.rb
Instance Method Summary collapse
- #async ⇒ Object
- #check_exists ⇒ Object
- #create(attributes = {}, create_options = {}) ⇒ Object
- #create_async(attributes = {}, create_options = {}) ⇒ Object
- #each_slice(slice_size = nil, &block) ⇒ Object
- #first ⇒ Object
- #first_async ⇒ Object
- #first_or_new(attributes) ⇒ Object
- #first_or_new_async(attributes) ⇒ Object
- #get ⇒ Object
-
#initialize(record_klass) ⇒ QueryBuilder
constructor
A new instance of QueryBuilder.
- #inspect ⇒ Object
- #limit(limit) ⇒ Object
- #new(attributes) ⇒ Object
- #order(*columns) ⇒ Object
- #paginate(page_size) ⇒ Object
- #pluck(*columns) ⇒ Object
- #select(*columns) ⇒ Object
- #to_cql ⇒ Object
- #trace(trace) ⇒ Object
- #where(params) ⇒ Object
Constructor Details
#initialize(record_klass) ⇒ QueryBuilder
Returns a new instance of QueryBuilder.
8 9 10 11 12 |
# File 'lib/cassandra_model/query_builder.rb', line 8 def initialize(record_klass) @record_klass = record_klass @params = {} @options = {} end |
Instance Method Details
#async ⇒ Object
14 15 16 |
# File 'lib/cassandra_model/query_builder.rb', line 14 def async @record_klass.request_async(@params, @options) end |
#check_exists ⇒ Object
61 62 63 64 |
# File 'lib/cassandra_model/query_builder.rb', line 61 def check_exists @options.merge!(check_exists: true) self end |
#create(attributes = {}, create_options = {}) ⇒ Object
43 44 45 |
# File 'lib/cassandra_model/query_builder.rb', line 43 def create(attributes = {}, = {}) @record_klass.create(@params.merge(attributes), @options.merge()) end |
#create_async(attributes = {}, create_options = {}) ⇒ Object
39 40 41 |
# File 'lib/cassandra_model/query_builder.rb', line 39 def create_async(attributes = {}, = {}) @record_klass.create_async(@params.merge(attributes), @options.merge()) end |
#each_slice(slice_size = nil, &block) ⇒ Object
75 76 77 |
# File 'lib/cassandra_model/query_builder.rb', line 75 def each_slice(slice_size = nil, &block) paginate(slice_size).async.each_slice(&block) end |
#first ⇒ Object
35 36 37 |
# File 'lib/cassandra_model/query_builder.rb', line 35 def first @record_klass.first(@params, @options) end |
#first_async ⇒ Object
31 32 33 |
# File 'lib/cassandra_model/query_builder.rb', line 31 def first_async @record_klass.first_async(@params, @options) end |
#first_or_new(attributes) ⇒ Object
57 58 59 |
# File 'lib/cassandra_model/query_builder.rb', line 57 def first_or_new(attributes) first_or_new_async(attributes).get end |
#first_or_new_async(attributes) ⇒ Object
51 52 53 54 55 |
# File 'lib/cassandra_model/query_builder.rb', line 51 def first_or_new_async(attributes) first_async.then do |result| result || new(attributes) end end |
#get ⇒ Object
18 19 20 |
# File 'lib/cassandra_model/query_builder.rb', line 18 def get @record_klass.request(@params, @options) end |
#inspect ⇒ Object
26 27 28 29 |
# File 'lib/cassandra_model/query_builder.rb', line 26 def inspect results = limit(@options[:limit] || 10).get "#<#{self.class.to_s}: #{inspected_results(results)}>" end |
#limit(limit) ⇒ Object
92 93 94 95 |
# File 'lib/cassandra_model/query_builder.rb', line 92 def limit(limit) @options[:limit] = limit self end |
#new(attributes) ⇒ Object
47 48 49 |
# File 'lib/cassandra_model/query_builder.rb', line 47 def new(attributes) @record_klass.new(@params.merge(attributes)) end |
#order(*columns) ⇒ Object
88 89 90 |
# File 'lib/cassandra_model/query_builder.rb', line 88 def order(*columns) append_option(columns, :order_by) end |
#paginate(page_size) ⇒ Object
102 103 104 105 |
# File 'lib/cassandra_model/query_builder.rb', line 102 def paginate(page_size) @options[:page_size] = page_size self end |
#pluck(*columns) ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/cassandra_model/query_builder.rb', line 66 def pluck(*columns) query = select(*columns) if columns.length == 1 query.map { |result| pluck_values(columns, result).first } else query.map { |result| pluck_values(columns, result) } end end |
#select(*columns) ⇒ Object
84 85 86 |
# File 'lib/cassandra_model/query_builder.rb', line 84 def select(*columns) append_option(columns, :select) end |
#to_cql ⇒ Object
22 23 24 |
# File 'lib/cassandra_model/query_builder.rb', line 22 def to_cql @record_klass.(@params, @options).first end |
#trace(trace) ⇒ Object
97 98 99 100 |
# File 'lib/cassandra_model/query_builder.rb', line 97 def trace(trace) @options[:trace] = trace self end |
#where(params) ⇒ Object
79 80 81 82 |
# File 'lib/cassandra_model/query_builder.rb', line 79 def where(params) @params.merge!(params) self end |