class MongoidOccurrences::Aggregations::OccursOn

Attributes

date_time[R]
options[R]

Public Class Methods

new(base_criteria, date_time, options = {}) click to toggle source
# File lib/mongoid_occurrences/aggregations/occurs_on.rb, line 6
def initialize(base_criteria, date_time, options = {})
  @base_criteria = base_criteria
  @date_time = date_time
  @options = options
end

Private Instance Methods

criteria() click to toggle source
# File lib/mongoid_occurrences/aggregations/occurs_on.rb, line 14
def criteria
  base_criteria.occurs_on(date_time)
end
pipeline() click to toggle source
# File lib/mongoid_occurrences/aggregations/occurs_on.rb, line 18
def pipeline
  [
    { '$addFields' => { '_daily_occurrences' => '$daily_occurrences' } },
    { '$unwind' => { 'path' => '$_daily_occurrences' } },
    { '$addFields' => { '_dtstart' => '$_daily_occurrences.ds', '_dtend' => '$_daily_occurrences.de' } },
    { '$project' => { '_daily_occurrences' => 0 } },
    { '$match' => Queries::OccursOn.criteria(base_criteria, date_time, dtstart_field: '_dtstart', dtend_field: '_dtend').selector },
    { '$sort' => { sort_key => { asc: 1, desc: -1 }[sort_order] } }
  ]
end