Sha256: b3f58cb36da1f0c8796c7f7ac14539ca7abc4e049b0c7cd224d1ae5a79966878

Contents?: true

Size: 1012 Bytes

Versions: 12

Compression:

Stored size: 1012 Bytes

Contents

require 'mongoid_occurrences/aggregations/aggregation'

module MongoidOccurrences
  module Aggregations
    class OccursFrom < Aggregation
      def initialize(base_criteria, date_time, options = {})
        @base_criteria = base_criteria
        @date_time = date_time
        @options = options
      end

      private

      def criteria
        base_criteria.occurs_from(date_time)
      end

      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::OccursFrom.criteria(base_criteria, date_time, dtstart_field: '_dtstart').selector },
          { '$sort' => { sort_key => { asc: 1, desc: -1 }[sort_order] } }
        ]
      end

      attr_reader :date_time, :options
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
mongoid_occurrences-1.2.0 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.1.6 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.1.5 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.1.4 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.1.2 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.1.1 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.1.0 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.0.4 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.0.3 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.0.2 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.0.1 lib/mongoid_occurrences/aggregations/occurs_from.rb
mongoid_occurrences-1.0.0 lib/mongoid_occurrences/aggregations/occurs_from.rb