module MongoidOccurrences::HasOccurrences

Public Class Methods

included(base) click to toggle source
# File lib/mongoid_occurrences/has_occurrences.rb, line 3
def self.included(base)
  base.extend ClassMethods
end

Public Instance Methods

assign_daily_occurrences!() click to toggle source
# File lib/mongoid_occurrences/has_occurrences.rb, line 31
def assign_daily_occurrences!
  return self.daily_occurrences = nil if occurrences.blank?
  self.daily_occurrences = begin
    res = occurrences.select(&:append).flat_map(&:daily_occurrences)

    [occurrences.select(&:remove), occurrences.select(&:replace)].flatten.flat_map(&:daily_occurrences).each do |occurrence|
      res = res.reject { |res_occurrence| res_occurrence.overlaps?(occurrence) }
    end

    res += occurrences.select(&:replace).flat_map(&:daily_occurrences)

    res.sort
  end
end
occurrences_cache_key() click to toggle source
# File lib/mongoid_occurrences/has_occurrences.rb, line 26
def occurrences_cache_key
  last_timestamp = occurrences.unscoped.order(updated_at: :desc).limit(1).pluck(:updated_at).first
  "#{occurrences.unscoped.size}-#{last_timestamp.to_i}"
end

Private Instance Methods

assign_occurrences_cache_key!() click to toggle source
# File lib/mongoid_occurrences/has_occurrences.rb, line 48
def assign_occurrences_cache_key!
  self._previous_occurrences_cache_key = occurrences_cache_key
end