Class: DataMapper::Queries::SelectStatement
- Inherits:
-
Object
- Object
- DataMapper::Queries::SelectStatement
show all
- Defined in:
- lib/data_mapper/queries/select_statement.rb
Instance Method Summary
collapse
Constructor Details
#initialize(database, options) ⇒ SelectStatement
Returns a new instance of SelectStatement.
8
9
10
|
# File 'lib/data_mapper/queries/select_statement.rb', line 8
def initialize(database, options)
@database, @options = database, options
end
|
Instance Method Details
#conditions ⇒ Object
66
67
68
|
# File 'lib/data_mapper/queries/select_statement.rb', line 66
def conditions
@conditions ||= Conditions.new(@database, @options)
end
|
#escape(conditions) ⇒ Object
28
29
30
|
# File 'lib/data_mapper/queries/select_statement.rb', line 28
def escape(conditions)
@database.escape(conditions)
end
|
#has_id? ⇒ Boolean
24
25
26
|
# File 'lib/data_mapper/queries/select_statement.rb', line 24
def has_id?
conditions.has_id?
end
|
#include?(association_name) ⇒ Boolean
36
37
38
39
|
# File 'lib/data_mapper/queries/select_statement.rb', line 36
def include?(association_name)
return false if includes.empty?
includes.include?(association_name)
end
|
#includes ⇒ Object
41
42
43
44
|
# File 'lib/data_mapper/queries/select_statement.rb', line 41
def includes
list = @options[:include] ||= []
list.kind_of?(Array) ? list : [list]
end
|
#inspect ⇒ Object
32
33
34
|
# File 'lib/data_mapper/queries/select_statement.rb', line 32
def inspect
@options.inspect
end
|
#instance_id ⇒ Object
62
63
64
|
# File 'lib/data_mapper/queries/select_statement.rb', line 62
def instance_id
@options[:id]
end
|
#klass ⇒ Object
20
21
22
|
# File 'lib/data_mapper/queries/select_statement.rb', line 20
def klass
@options[:class]
end
|
#limit ⇒ Object
12
13
14
|
# File 'lib/data_mapper/queries/select_statement.rb', line 12
def limit
@options[:limit]
end
|
#order ⇒ Object
16
17
18
|
# File 'lib/data_mapper/queries/select_statement.rb', line 16
def order
@options[:order]
end
|
#reload? ⇒ Boolean
46
47
48
|
# File 'lib/data_mapper/queries/select_statement.rb', line 46
def reload?
@options[:reload]
end
|
#select ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/data_mapper/queries/select_statement.rb', line 50
def select
select_columns = @options[:select]
unless select_columns.nil?
select_columns = select_columns.kind_of?(Array) ? select_columns : (@options[:select] = [select_columns])
select_columns.map { |column| @database.quote_column_name(column.to_s) }
else
@options[:select] = @database[klass].columns.select do |column|
include?(column.name) || !column.lazy?
end.map { |column| column.to_sql }
end
end
|
#table ⇒ Object
70
71
72
73
74
75
76
|
# File 'lib/data_mapper/queries/select_statement.rb', line 70
def table
@table_name || @table_name = if @options.has_key?(:table)
@database.quote_table_name(@options[:table])
else
@database[klass].to_sql
end
end
|
#to_sql ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/data_mapper/queries/select_statement.rb', line 78
def to_sql
sql = 'SELECT ' << select.join(', ') << ' FROM ' << table
where = []
where += conditions.to_a unless conditions.empty?
unless where.empty?
sql << ' WHERE (' << where.join(') AND (') << ')'
end
unless order.nil?
sql << ' ORDER BY ' << order.to_s
end
unless limit.nil?
sql << ' LIMIT ' << limit.to_s
end
return sql
end
|