Class: MongoidOccurrences::Aggregations::Aggregation

Inherits:
Object
  • Object
show all
Defined in:
lib/mongoid_occurrences/aggregations/aggregation.rb

Direct Known Subclasses

OccursBetween, OccursFrom, OccursOn, OccursUntil

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_criteria, options = {}) ⇒ Aggregation

Returns a new instance of Aggregation.



18
19
20
21
# File 'lib/mongoid_occurrences/aggregations/aggregation.rb', line 18

def initialize(base_criteria, options = {})
  @base_criteria = base_criteria
  @options = options
end

Class Method Details

.instantiate(*args) ⇒ Object



10
11
12
# File 'lib/mongoid_occurrences/aggregations/aggregation.rb', line 10

def self.instantiate(*args)
  new(*args).instantiate
end

.option(name, default_value = nil) ⇒ Object



4
5
6
7
8
# File 'lib/mongoid_occurrences/aggregations/aggregation.rb', line 4

def self.option(name, default_value=nil)
  define_method(name) do
    HashWithIndifferentAccess[options].fetch(name, default_value)
  end
end

Instance Method Details

#aggregationObject



23
24
25
26
27
28
29
30
# File 'lib/mongoid_occurrences/aggregations/aggregation.rb', line 23

def aggregation
  base_criteria.klass
               .collection
               .aggregate(
                 (selectors + pipeline),
                 allow_disk_use: allow_disk_use
               )
end

#instantiateObject



32
33
34
35
36
# File 'lib/mongoid_occurrences/aggregations/aggregation.rb', line 32

def instantiate
  aggregation.map do |doc|
    base_criteria.klass.instantiate(doc)
  end
end