Module: ActiveHouse::Querying::Having

Extended by:
ActiveSupport::Concern
Included in:
ActiveHouse::QueryBuilder
Defined in:
lib/active_house/querying/having.rb

Instance Method Summary collapse

Instance Method Details

#build_having_query_partObject



13
14
15
# File 'lib/active_house/querying/having.rb', line 13

def build_having_query_part
  "HAVING\n" + values[:having].join(" AND\n") unless values[:having].empty?
end

#format_having(conditions) ⇒ Object

Raises:

  • (ArgumentError)


31
32
33
34
35
36
37
38
# File 'lib/active_house/querying/having.rb', line 31

def format_having(conditions)
  raise ArgumentError, 'wrong number of arguments' if conditions.empty?
  raise ArgumentError, 'wrong number of arguments' if conditions.empty?

  return [ActiveHouse::PreparedStatement.prepare_sql(*conditions)] if conditions.size > 1

  ActiveHouse::PreparedStatement.build_condition(conditions.first)
end

#having(*conditions) ⇒ Object



27
28
29
# File 'lib/active_house/querying/having.rb', line 27

def having(*conditions)
  dup.having!(*conditions)
end

#having!(*conditions) ⇒ Object



21
22
23
24
25
# File 'lib/active_house/querying/having.rb', line 21

def having!(*conditions)
  formatted_conditions = format_having(conditions)
  values[:having] = (values[:having] + formatted_conditions).uniq
  self
end

#initial_valuesObject



17
18
19
# File 'lib/active_house/querying/having.rb', line 17

def initial_values
  super.merge having: []
end