app/services/search/query_adapter/abstract.rb in rademade_admin-0.0.1 vs app/services/search/query_adapter/abstract.rb in rademade_admin-0.0.2

- old
+ new

@@ -1,54 +1,45 @@ +# -*- encoding : utf-8 -*- module RademadeAdmin module Search - class QueryAdapter + module QueryAdapter + class Abstract - def initialize(model) - @model = model - end + def initialize(model) + @model = model + end - def apply_conditions(search_conditions, is_related_list) - # todo something with is_related_list - @params = search_conditions.params - @result = is_related_list ? related_base_condition : base_condition - search_conditions.conditions.each do |query_part, values| - @result = self.send(query_part, values) unless values.nil? + def apply_conditions(search_conditions) + @params = search_conditions.params + @result = search_conditions.base_condition(@model) + search_conditions.conditions.each do |query_part, values| + @result = self.send(query_part, values) unless values.nil? + end + @result end - @result - end - protected + protected - def base_condition - @model.unscoped - end + def where(where_conditions) + @result + end - def related_base_condition - parent_model = @params[:parent].constantize - parent_id = @params[:parent_id] - model_related_name = @model.to_s.demodulize.pluralize.downcase.to_sym - parent_model.find(parent_id).send(model_related_name).unscoped - end + def order(order_conditions) + @result + end - def where(where_conditions) - @result - end + def page(page_condition) + @result.page(page_condition) + end - def order(order_conditions) - @result - end + def per_page(per_page_condition) + @result.per(per_page_condition) + end - def page(page_condition) - @result.page(page_condition) - end + def limit(limit_condition) + @result.limit(limit_condition) + end - def per_page(per_page_condition) - @result.per(per_page_condition) end - - def limit(limit_condition) - @result.limit(limit_condition) - end - end end -end \ No newline at end of file +end