class QueryBuilder::Core::Statement

Abstract base class for CQL statemens (roots of AST)

The statement can belong to some context (keyspace, table). It is created with several clauses (like WHERE, SET etc.)

@abstract

Public Class Methods

new(*) click to toggle source

@!method initialize(type, *attributes, &block) Initializes the statement with a type, attributes and block

@param (see QueryBuilder::Clause) @param [Proc] block

The block that returns an array of clauses for the statement
Calls superclass method QueryBuilder::Core::Base::new
# File lib/query_builder/core/statement.rb, line 23
def initialize(*)
  @clauses = block_given? ? Array[*yield] : []
  super
end

Public Instance Methods

<<(clause) click to toggle source

@!method <<(clause) Returns a new statement where the clause is added

@param [QueryBuilder::Clause] clause

@return [QueryBuilder::Statement]

# File lib/query_builder/core/statement.rb, line 47
def <<(clause)
  new_clauses = @clauses.dup
  new_clauses.delete clause
  self.class.new(attributes) { new_clauses + [clause] }
end
clauses(cond = nil) click to toggle source

@!method clauses(type = nil) Returns array of chunks of code for the statement’s clauses

@param [Symbol] type The optional type to select clauses by

@return [Array<String>]

# File lib/query_builder/core/statement.rb, line 35
def clauses(cond = nil)
  (cond ? @clauses.select { |item| cond.equal? item.type } : @clauses)
    .map(&:to_s)
end