Class: Predefined::ActiveRecordQuery

Inherits:
Query
  • Object
show all
Defined in:
lib/predefined/active_record.rb

Defined Under Namespace

Classes: Database

Instance Attribute Summary

Attributes inherited from Query

#name

Instance Method Summary collapse

Methods inherited from Query

format_query, #initialize, template, #template, template_file, template_missing, template_paths, template_paths=

Constructor Details

This class inherits a constructor from Predefined::Query

Instance Method Details

#connectionObject



9
10
11
# File 'lib/predefined/active_record.rb', line 9

def connection
  Database.connection
end

#result_to_rows(result) ⇒ Object

TODO: Is there a way to do this built-in to ActiveRecord?



51
52
53
54
55
56
57
58
59
# File 'lib/predefined/active_record.rb', line 51

def result_to_rows(result)
  result.rows.map do |row|
    typed_row = result.columns.zip(row).map do |column_name, value|
      typed_value = result.column_types[column_name].send(:type_cast, value)
      [column_name.to_sym, typed_value]
    end
    Hash[typed_row]
  end
end

#select_all(params = nil) ⇒ Object



17
18
19
# File 'lib/predefined/active_record.rb', line 17

def select_all(params=nil)
  result_to_rows(connection.select_all(to_sql(params), name))
end

#select_object(klass, params = nil) ⇒ Object



37
38
39
40
41
42
# File 'lib/predefined/active_record.rb', line 37

def select_object(klass, params=nil)
  record = connection.select_one(to_sql(params), name)
  if record
    klass.new(record)
  end
end

#select_objects(klass, params = nil) ⇒ Object



44
45
46
47
48
# File 'lib/predefined/active_record.rb', line 44

def select_objects(klass, params=nil)
  connection.select_all(to_sql(params), name).map do |row|
    klass.new(row)
  end
end

#select_one(params = nil) ⇒ Object



21
22
23
# File 'lib/predefined/active_record.rb', line 21

def select_one(params=nil)
  select_all(params).first
end

#select_rows(params = nil) ⇒ Object



25
26
27
# File 'lib/predefined/active_record.rb', line 25

def select_rows(params=nil)
  connection.select_rows(to_sql(params), name)
end

#select_value(params = nil) ⇒ Object



33
34
35
# File 'lib/predefined/active_record.rb', line 33

def select_value(params=nil)
  connection.select_value(to_sql(params), name)
end

#select_values(params = nil) ⇒ Object



29
30
31
# File 'lib/predefined/active_record.rb', line 29

def select_values(params=nil)
  connection.select_values(to_sql(params), name)
end

#to_sql(params = nil) ⇒ Object



13
14
15
# File 'lib/predefined/active_record.rb', line 13

def to_sql(params=nil)
  Database.send(:sanitize_sql, [template, params])
end