module Mongoid::Tracking::Readers
Reader methods (previously known as “accessors”)
Public Instance Methods
all_values()
click to toggle source
# File lib/mongoid/tracking/readers.rb, line 40 def all_values on(first_date..last_date) if first_date end
all_values_total()
click to toggle source
# File lib/mongoid/tracking/readers.rb, line 44 def all_values_total return all_values.sum.to_i if all_values && !all_values.nil? return 0 end
date_cleanup()
click to toggle source
We need the cleanup method only for methods who rely on date indexes to be valid (well formed) like first/last_date. This is because Mongo update operations cleans up the last key, which in our case left the array in an inconsistent state.
Example: Before update:
{ :visits_data => {"14803" => {"22" => 1} } }
After updating with: {“$unset”=>{“visits_data.14803.22”=>1}
{ :visits_data => {"14803" => {} } }
We can NOT retrieve the first date with visits_data.keys.min
# File lib/mongoid/tracking/readers.rb, line 80 def date_cleanup @data.reject! {|k,v| v.count == 0} end
first_date()
click to toggle source
Utility methods
# File lib/mongoid/tracking/readers.rb, line 50 def first_date date_cleanup return nil unless _ts = @data.keys.min return nil unless _h = @data[_ts].keys.min Time.from_key(_ts, _h) end
first_value()
click to toggle source
# File lib/mongoid/tracking/readers.rb, line 18 def first_value data_for(first_date) end
last_date()
click to toggle source
# File lib/mongoid/tracking/readers.rb, line 57 def last_date date_cleanup return nil unless _ts = @data.keys.max return nil unless _h = @data[_ts].keys.max Time.from_key(_ts, _h) end
last_days(how_much = 7)
click to toggle source
# File lib/mongoid/tracking/readers.rb, line 26 def last_days(how_much = 7) return [today] unless how_much > 0 now, hmd = Time.now, (how_much - 1) on( now.ago(hmd.days)..now ) end
last_value()
click to toggle source
# File lib/mongoid/tracking/readers.rb, line 22 def last_value data_for(last_date) end
on(date)
click to toggle source
# File lib/mongoid/tracking/readers.rb, line 32 def on(date) if date.is_a?(Range) whole_data_for_range(date) else whole_data_for(date) end end
today()
click to toggle source
Access methods
# File lib/mongoid/tracking/readers.rb, line 10 def today whole_data_for(Time.now) end
yesterday()
click to toggle source
# File lib/mongoid/tracking/readers.rb, line 14 def yesterday whole_data_for(Time.now - 1.day) end