Class: Riddle::Query::Select
- Inherits:
-
Object
- Object
- Riddle::Query::Select
- Defined in:
- lib/riddle/query/select.rb
Instance Method Summary collapse
- #from(*indices) ⇒ Object
- #group_by(attribute) ⇒ Object
-
#initialize ⇒ Select
constructor
A new instance of Select.
- #limit(limit) ⇒ Object
- #matching(match) ⇒ Object
- #offset(offset) ⇒ Object
- #order_by(order) ⇒ Object
- #order_within_group_by(order) ⇒ Object
- #to_sql ⇒ Object
- #values(*values) ⇒ Object
- #where(filters = {}) ⇒ Object
- #where_all(filters = {}) ⇒ Object
- #where_not(filters = {}) ⇒ Object
- #where_not_all(filters = {}) ⇒ Object
- #with_options(options = {}) ⇒ Object
Constructor Details
#initialize ⇒ Select
Returns a new instance of Select.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/riddle/query/select.rb', line 2 def initialize @values = ['*'] @indices = [] @matching = nil @wheres = {} @where_alls = {} @where_nots = {} @where_not_alls = {} @group_by = nil @order_by = nil @order_within_group_by = nil @offset = nil @limit = nil = {} end |
Instance Method Details
#from(*indices) ⇒ Object
23 24 25 26 |
# File 'lib/riddle/query/select.rb', line 23 def from(*indices) @indices += indices self end |
#group_by(attribute) ⇒ Object
53 54 55 56 |
# File 'lib/riddle/query/select.rb', line 53 def group_by(attribute) @group_by = attribute self end |
#limit(limit) ⇒ Object
68 69 70 71 |
# File 'lib/riddle/query/select.rb', line 68 def limit(limit) @limit = limit self end |
#matching(match) ⇒ Object
28 29 30 31 |
# File 'lib/riddle/query/select.rb', line 28 def matching(match) @matching = match self end |
#offset(offset) ⇒ Object
73 74 75 76 |
# File 'lib/riddle/query/select.rb', line 73 def offset(offset) @offset = offset self end |
#order_by(order) ⇒ Object
58 59 60 61 |
# File 'lib/riddle/query/select.rb', line 58 def order_by(order) @order_by = order self end |
#order_within_group_by(order) ⇒ Object
63 64 65 66 |
# File 'lib/riddle/query/select.rb', line 63 def order_within_group_by(order) @order_within_group_by = order self end |
#to_sql ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/riddle/query/select.rb', line 83 def to_sql sql = "SELECT #{ @values.join(', ') } FROM #{ @indices.join(', ') }" sql << " WHERE #{ combined_wheres }" if wheres? sql << " GROUP BY #{escape_column(@group_by)}" if !@group_by.nil? unless @order_within_group_by.nil? sql << " WITHIN GROUP ORDER BY #{escape_column(@order_within_group_by)}" end sql << " ORDER BY #{escape_column(@order_by)}" if !@order_by.nil? sql << " #{limit_clause}" unless @limit.nil? && @offset.nil? sql << " #{options_clause}" unless .empty? sql end |
#values(*values) ⇒ Object
18 19 20 21 |
# File 'lib/riddle/query/select.rb', line 18 def values(*values) @values += values self end |
#where(filters = {}) ⇒ Object
33 34 35 36 |
# File 'lib/riddle/query/select.rb', line 33 def where(filters = {}) @wheres.merge!(filters) self end |
#where_all(filters = {}) ⇒ Object
38 39 40 41 |
# File 'lib/riddle/query/select.rb', line 38 def where_all(filters = {}) @where_alls.merge!(filters) self end |
#where_not(filters = {}) ⇒ Object
43 44 45 46 |
# File 'lib/riddle/query/select.rb', line 43 def where_not(filters = {}) @where_nots.merge!(filters) self end |
#where_not_all(filters = {}) ⇒ Object
48 49 50 51 |
# File 'lib/riddle/query/select.rb', line 48 def where_not_all(filters = {}) @where_not_alls.merge!(filters) self end |
#with_options(options = {}) ⇒ Object
78 79 80 81 |
# File 'lib/riddle/query/select.rb', line 78 def ( = {}) .merge! self end |