Class: QueryBuilder::Core::Statement Abstract
- Defined in:
- lib/query_builder/core/statement.rb
Overview
This class is abstract.
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.)
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#<<(clause) ⇒ QueryBuilder::Statement
Returns a new statement where the clause is added.
-
#clauses(type = nil) ⇒ Array<String>
Returns array of chunks of code for the statement’s clauses.
-
#initialize(type, *attributes, &block) ⇒ Statement
constructor
Initializes the statement with a type, attributes and block.
Methods inherited from Base
#attribute, attribute, attributes, inherited, #to_s
Constructor Details
#initialize(type, *attributes, &block) ⇒ Statement
Initializes the statement with a type, attributes and block
23 24 25 26 |
# File 'lib/query_builder/core/statement.rb', line 23 def initialize(*) @clauses = block_given? ? Array[*yield] : [] super end |
Instance Method Details
#<<(clause) ⇒ QueryBuilder::Statement
Returns a new statement where the clause is added
47 48 49 50 51 |
# 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(type = nil) ⇒ Array<String>
Returns array of chunks of code for the statement’s clauses
35 36 37 38 |
# 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 |