Module: Oedipus::DataMapper::Conversions
- Included in:
- Index
- Defined in:
- lib/oedipus/data_mapper/conversions.rb
Overview
Methods for converting between DataMapper and Oedipus types
Instance Method Summary collapse
-
#convert_filters(args) ⇒ Object
Performs a deep conversion of DataMapper-style operators to Oedipus operators.
Instance Method Details
#convert_filters(args) ⇒ Object
Performs a deep conversion of DataMapper-style operators to Oedipus operators
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/oedipus/data_mapper/conversions.rb', line 15 def convert_filters(args) query, = connection[name].send(:extract_query_data, args, nil) [ query, .inject({}) { |o, (k, v)| case k when ::DataMapper::Query::Operator case k.operator when :not, :lt, :lte, :gt, :gte o.merge!(k.target => Oedipus.send(k.operator, v)) else raise ArgumentError, "Unsupported Sphinx filter operator #{k.operator}" end when :order o.merge!(order: convert_order(v)) when :facets o.merge!(facets: convert_facets(v)) else o.merge!(k => v) end } ].compact end |