lib/fetcha.rb in fetcha-0.1.3 vs lib/fetcha.rb in fetcha-0.2.0
- old
+ new
@@ -10,14 +10,16 @@
results = self.all
query_scope = params['scope']
filters = params['filter']
sorting = params['sort']
pages = params['page']
+ search = params['search']
results = process_scope(results, query_scope) if query_scope
results = process_filtering(results, filters) if filters
results = process_sorting(results, sorting) if sorting
results = process_pagination!(results, pages) if pages
+ results = process_search(results, search) if search
results
end
private
@@ -62,22 +64,14 @@
def process_scope(datasource, query_scope)
datasource.send(query_scope) if (fetchable_opts[:scopes].include? query_scope.to_sym)
end
- def process_filtering(datasource, filters)
- if filters.is_a?(String)
- full_text_filtering(datasource, filters)
- else
- hash_filtering(datasource, filters)
- end
+ def process_search(datasource, search)
+ datasource.search_full_text(search)
end
- def full_text_filtering(datasource, filter)
- datasource.search_full_text(filter)
- end
-
- def hash_filtering(datasource, filters = {})
+ def process_filtering(datasource, filters = {})
filter_opts = fetchable_opts[:filtering]
includes = Set.new()
real_filters = filters.select do |k|
next unless filter_opts.keys.include? k