module Cassie::Statements::Statement::Selection

Sepcific functionality and DSL for selection statements

The following class attributes are affected when included:

Public Class Methods

included(base) click to toggle source

@!visibility private @!parse include Relations @!parse extend Relations::ClassMethods @!parse include Ordering @!parse extend Ordering::ClassMethods @!parse include Limiting @!parse extend Limiting::ClassMethods @!parse include AllowFiltering @!parse extend AllowFiltering::ClassMethods @!parse include Pagination @!parse extend Pagination::ClassMethods

# File lib/cassie/statements/statement/selection.rb, line 26
def self.included(base)
  base.instance_eval do
    include Relations
    include Ordering
    include Limiting
    include AllowFiltering
    include Pagination

    @result_class = Cassie::Statements::Results::QueryResult
    @idempotent = true
  end
  base.extend ClassMethods
end

Protected Instance Methods

build_select_clause() click to toggle source
# File lib/cassie/statements/statement/selection.rb, line 118
def build_select_clause
  return '*' if selectors.empty?

  selectors.join(', ')
end
build_select_cql_and_params() click to toggle source
# File lib/cassie/statements/statement/selection.rb, line 100
def build_select_cql_and_params
  where_str, @params = build_where_and_params

  @cql = %(
    SELECT #{build_select_clause}
      FROM #{table}
      #{where_str}
      #{build_order_str}
      #{build_limit_str}
      #{build_allow_filtering_str}
  ).squish + ";"
end
result_opts() click to toggle source
Calls superclass method
# File lib/cassie/statements/statement/selection.rb, line 93
def result_opts
  opts = {}
  opts[:each_deserializer] = method(:build_result) if respond_to?(:build_result, true)
  opts[:deserializer] = method(:build_results) if respond_to?(:build_results, true)
  super.merge(opts)
end
selectors() click to toggle source

a select clause is built up of selectors

# File lib/cassie/statements/statement/selection.rb, line 114
def selectors
  self.class.selectors
end