lib/supernova/criteria.rb in supernova-0.2.2 vs lib/supernova/criteria.rb in supernova-0.3.0

- old
+ new

@@ -26,10 +26,14 @@ end def for_classes(clazzes) merge_filters :classes, [clazzes].flatten end + + def attribute_mapping(mapping) + merge_search_options :attribute_mapping, mapping + end def order(order_option) merge_search_options :order, order_option end @@ -39,33 +43,33 @@ def group_by(group_option) merge_search_options :group_by, group_option end - def search(query) - merge_filters :search, query + def search(*terms) + merge_filters_array :search, terms end def with(filters) merge_filters :with, filters end + def where(*args) + with(*args) + end + def without(filters) self.filters[:without] ||= Hash.new filters.each do |key, value| self.filters[:without][key] ||= Array.new self.filters[:without][key] << value if !self.filters[:without][key].include?(value) end self end def select(*fields) - self.search_options[:select] ||= Array.new - fields.flatten.each do |field| - self.search_options[:select] << field if !self.search_options[:select].include?(field) - end - self + merge_filters_array :select, fields end def conditions(filters) merge_filters :conditions, filters end @@ -102,9 +106,17 @@ nil end def merge_filters(key, value) merge_filters_or_search_options(self.filters, key, value) + end + + def merge_filters_array(key, fields) + self.search_options[key] ||= Array.new + fields.flatten.each do |field| + self.search_options[key] << field if !self.search_options[key].include?(field) + end + self end def merge_search_options(key, value) merge_filters_or_search_options(self.search_options, key, value) end \ No newline at end of file