Class: Ldumbd::FilterConverter
- Inherits:
-
Object
- Object
- Ldumbd::FilterConverter
- Defined in:
- lib/ldumbd/filter_converter.rb
Class Method Summary collapse
-
.filter_to_sequel(base_model, filter) ⇒ Object
Public: Converts a parsed LDAP filter to a Sequel dataset filter.
Class Method Details
.filter_to_sequel(base_model, filter) ⇒ Object
Public: Converts a parsed LDAP filter to a Sequel dataset filter.
base_model: The dataset’s base model. filter: A parsed LDAP filter.
Examples
base_model = User
filter = [:and,
[:eq, 'uid', nil, 'john'],
[:ge, 'uidNumber', nil, '1000']]
base_model.where(Ldumbd::FilterConverter.filter_to_sequel(base_model,
filter)).sql
# => "SELECT * FROM \"users\" WHERE ((\"users\".\"name\" = 'john') AND (\"users\".\"id\" >= '1000'))"
Returns a Sequel dataset filter.
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/ldumbd/filter_converter.rb', line 21 def self.filter_to_sequel(base_model, filter) filter = filter.dup op = filter.shift case op when :and, :or, :not nested_filter_to_sequel(base_model, filter, op) when :true, :false, :eq, :ge, :le, :present, :substrings simple_filter_to_sequel(base_model, filter, op) else raise 'not implemented yet' end end |