Module: ActiveHouse::Querying::Where
- Extended by:
- ActiveSupport::Concern
- Included in:
- ActiveHouse::QueryBuilder
- Defined in:
- lib/active_house/querying/where.rb
Instance Method Summary collapse
- #build_where_query_part ⇒ Object
- #format_where_clauses(conditions) ⇒ Object
- #initial_values ⇒ Object
- #where(*conditions) ⇒ Object
- #where!(*conditions) ⇒ Object
- #where_not(*conditions) ⇒ Object
- #where_not!(*conditions) ⇒ Object
Instance Method Details
#build_where_query_part ⇒ Object
16 17 18 |
# File 'lib/active_house/querying/where.rb', line 16 def build_where_query_part "WHERE\n" + values[:where].join(" AND\n") unless values[:where].empty? end |
#format_where_clauses(conditions) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/active_house/querying/where.rb', line 41 def format_where_clauses(conditions) 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 |
#initial_values ⇒ Object
12 13 14 |
# File 'lib/active_house/querying/where.rb', line 12 def initial_values super.merge where: [] end |
#where(*conditions) ⇒ Object
33 34 35 |
# File 'lib/active_house/querying/where.rb', line 33 def where(*conditions) dup.where!(*conditions) end |
#where!(*conditions) ⇒ Object
20 21 22 23 24 |
# File 'lib/active_house/querying/where.rb', line 20 def where!(*conditions) formatted_conditions = format_where_clauses(conditions) values[:where] = (values[:where] + formatted_conditions).uniq self end |
#where_not(*conditions) ⇒ Object
37 38 39 |
# File 'lib/active_house/querying/where.rb', line 37 def where_not(*conditions) dup.where_not!(*conditions) end |
#where_not!(*conditions) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/active_house/querying/where.rb', line 26 def where_not!(*conditions) formatted_conditions = format_where_clauses(conditions) negative_condition = "NOT (#{formatted_conditions.join(' AND ')})" values[:where] = (values[:where] + [negative_condition]).uniq self end |