Module: ActiveHouse::Querying::Collect
- Extended by:
- ActiveSupport::Concern
- Included in:
- ActiveHouse::QueryBuilder
- Defined in:
- lib/active_house/querying/collect.rb
Instance Method Summary collapse
- #build_query ⇒ Object
- #collection ⇒ Object
- #count(value = 'COUNT() AS cnt') ⇒ Object
- #fetch_collection ⇒ Object
- #group_values ⇒ Object
- #initialize ⇒ Object
- #klass ⇒ Object
- #loaded? ⇒ Boolean
- #pluck(*fields) ⇒ Object
- #query_parts ⇒ Object
- #reset ⇒ Object
- #to_a ⇒ Object
- #to_hashes ⇒ Object
- #to_query ⇒ Object
Instance Method Details
#build_query ⇒ Object
75 76 77 |
# File 'lib/active_house/querying/collect.rb', line 75 def build_query query_parts.reject(&:nil?).join("\n") end |
#collection ⇒ Object
53 54 55 |
# File 'lib/active_house/querying/collect.rb', line 53 def collection @collection ||= fetch_collection end |
#count(value = 'COUNT() AS cnt') ⇒ Object
97 98 99 100 |
# File 'lib/active_house/querying/collect.rb', line 97 def count(value = 'COUNT() AS cnt') return 0 if group_values except(:select, :limit, :offset, :order).pluck(value).first end |
#fetch_collection ⇒ Object
57 58 59 |
# File 'lib/active_house/querying/collect.rb', line 57 def fetch_collection to_hashes.map { |row| model_class.load!(row) } end |
#group_values ⇒ Object
83 84 85 |
# File 'lib/active_house/querying/collect.rb', line 83 def group_values values[:group_by].empty? ? nil : values[:group_by] end |
#initialize ⇒ Object
28 29 30 31 |
# File 'lib/active_house/querying/collect.rb', line 28 def initialize(*) @collection = nil super end |
#klass ⇒ Object
79 80 81 |
# File 'lib/active_house/querying/collect.rb', line 79 def klass model_class end |
#loaded? ⇒ Boolean
41 42 43 |
# File 'lib/active_house/querying/collect.rb', line 41 def loaded? !@collection.nil? end |
#pluck(*fields) ⇒ Object
87 88 89 90 91 92 93 94 95 |
# File 'lib/active_house/querying/collect.rb', line 87 def pluck(*fields) result = except(:select).select(*fields).to_hashes return [] if result.empty? if result.first.keys.size == 1 result.map { |row| row.values.first } else result.map(&:values) end end |
#query_parts ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/active_house/querying/collect.rb', line 61 def query_parts [ build_select_query_part, build_from_query_part, build_array_join_query_part, build_where_query_part, build_group_by_query_part, build_having_query_part, build_order_by_query_part, build_limit_query_part, build_union_query_part ] end |
#reset ⇒ Object
37 38 39 |
# File 'lib/active_house/querying/collect.rb', line 37 def reset @collection = nil end |
#to_a ⇒ Object
33 34 35 |
# File 'lib/active_house/querying/collect.rb', line 33 def to_a collection end |
#to_hashes ⇒ Object
45 46 47 |
# File 'lib/active_house/querying/collect.rb', line 45 def to_hashes connection.select_rows(build_query.squish) end |
#to_query ⇒ Object
49 50 51 |
# File 'lib/active_house/querying/collect.rb', line 49 def to_query build_query end |