lib/mongoid/report/scope.rb in mongoid-report-0.1.3 vs lib/mongoid/report/scope.rb in mongoid-report-0.1.5
- old
+ new
@@ -17,27 +17,36 @@
self
end
def all
self.yield unless yielded?
- queries = compile_queries
- Collection.new(klass.collection.aggregate(queries), fields, columns)
+
+ aggregation_queries = compile_queries
+ rows = klass.collection.aggregate(aggregation_queries)
+
+ Collection.new(context, rows, fields, columns)
end
private
def compile_queries
- queries.dup.map do |query|
- query.each do |function_name, values|
- values.each do |name, value|
- value = value.call(context) if value.respond_to?(:call)
- query[function_name][name] = value
+ compiled = queries.map do |query|
+ next query unless query.has_key?("$match")
+
+ query.deep_dup.tap do |new_query|
+ new_query.each do |function_name, values|
+ values.each do |name, value|
+ if value.respond_to?(:call)
+ value = value.call(context)
+ end
+ new_query[function_name][name] = value
+ end
end
end
-
- query
end
+
+ compiled
end
def yielded?
@yielded
end
@@ -45,20 +54,20 @@
def queries
@queries ||= []
end
def klass
- context.class.settings_property(report_name, :for)
+ context.report_module_settings[report_name][:for]
end
def fields
# We need to use here only output field names it could be different
# than defined colunms, Example: field1: 'report-field-name'
- context.class.settings_property(report_name, :fields).values
+ context.report_module_settings[report_name][:fields].values
end
def columns
- context.class.settings_property(report_name, :columns)
+ context.report_module_settings[report_name][:columns]
end
end
end
end