Class: SqlQueryExecutor::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/sql_query_executor/base.rb

Overview

:nodoc:

Constant Summary collapse

STRING_SPACE =

:nodoc:

"$SS$"
QUERY_SPACE =
"$QS$"
TEMP_SPACE =
"$TS$"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(collection, query) ⇒ Base

Returns a new instance of Base.

Raises:

  • (ArgumentError)


12
13
14
15
16
17
18
19
20
21
# File 'lib/sql_query_executor/base.rb', line 12

def initialize(collection, query)
  query = query.first if query.respond_to?(:size) && query.size == 1 && !query.is_a?(Hash)

  message = check_query(query)
  raise ArgumentError.new(message) if message

  get_collection(collection)
  query = Query::Normalizers::QueryNormalizer.execute(query)
  @query = SqlQueryExecutor::Query::SubQuery.new query, @collection
end

Class Method Details

.where(collection, *query) ⇒ Object

Recursive method that divides the query in sub queries, executes each part individually and finally relates its results as specified in the query.



37
38
39
# File 'lib/sql_query_executor/base.rb', line 37

def self.where(collection, *query)
  self.new(collection, query).execute!
end

Instance Method Details

#execute!Object



23
24
25
# File 'lib/sql_query_executor/base.rb', line 23

def execute!
  @query.execute!
end

#selectorObject



31
32
33
# File 'lib/sql_query_executor/base.rb', line 31

def selector
  @query.selector
end

#to_sqlObject



27
28
29
# File 'lib/sql_query_executor/base.rb', line 27

def to_sql
  @query.to_sql
end