Class: ActiveHash::SQLQueryExecutor

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

Overview

:nodoc:

Class Method Summary collapse

Class Method Details

.args_to_query(args) ⇒ Object

Prepares query by replacing all ? by it’s real values in #args



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/active_repository/sql_query_executor.rb', line 6

def args_to_query(args)
  return args.first if args.size == 1

  query = args.first
  param = args.delete_at(1)

  param = convert_param(param)

  args[0] = query.sub("?", param)

  args_to_query(args)
end

.execute(klass, 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.



21
22
23
24
25
# File 'lib/active_repository/sql_query_executor.rb', line 21

def execute(klass, query)
  @operator, @sub_query, @objects = process_first(klass, query, query.split(" ")[1])

  @operator.nil? ? @objects : @objects.send(@operator, execute(klass, @sub_query)).sort_by{ |o| o.id }
end