Module: Torque::PostgreSQL::PredicateBuilder

Defined in:
lib/torque/postgresql/predicate_builder.rb,
lib/torque/postgresql/predicate_builder/array_handler.rb,
lib/torque/postgresql/predicate_builder/ltree_handler.rb,
lib/torque/postgresql/predicate_builder/regexp_handler.rb,
lib/torque/postgresql/predicate_builder/struct_handler.rb,
lib/torque/postgresql/predicate_builder/composite_handler.rb,
lib/torque/postgresql/predicate_builder/arel_attribute_handler.rb,
lib/torque/postgresql/predicate_builder/enumerator_lazy_handler.rb

Defined Under Namespace

Modules: ArrayHandler Classes: ArelAttributeHandler, CompositeHandler, EnumeratorLazyHandler, LtreeHandler, RegexpHandler, StructHandler

Constant Summary collapse

ARRAY_OID =
ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array

Instance Method Summary collapse

Instance Method Details

#build(attribute, value, operator = nil) ⇒ Object

Values described as a hash of columns or properties are turned into conditions over the column that holds them. Whole values are left to the regular handlers, so that they are compared as a single value



38
39
40
41
42
43
44
# File 'lib/torque/postgresql/predicate_builder.rb', line 38

def build(attribute, value, operator = nil)
  type = table.type(attribute.name)
  handler = handler_for_document(type, value)
  return super if handler.nil?

  handler.new(self).call(attribute, type, value)
end

#initializeObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/torque/postgresql/predicate_builder.rb', line 17

def initialize(*)
  super

  handlers = Array.wrap(PostgreSQL.config.predicate_builder.enabled).inquiry

  if handlers.regexp?
    register_handler(Regexp, RegexpHandler.new(self))
  end

  if handlers.enumerator_lazy?
    register_handler(Enumerator::Lazy, EnumeratorLazyHandler.new(self))
  end

  if handlers.arel_attribute?
    register_handler(::Arel::Attributes::Attribute, ArelAttributeHandler.new(self))
  end
end