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