Class: Totalizer::Metric

Inherits:
Object
  • Object
show all
Defined in:
lib/totalizer/metric.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Metric

Returns a new instance of Metric.



5
6
7
8
9
10
11
12
# File 'lib/totalizer/metric.rb', line 5

def initialize params
  self.model = params[:model]
  self.date = params[:date] || DateTime.now.change(hour: 0)
  self.duration = params[:duration] || 7
  self.filter = params[:filter]
  self.map = params[:map] || 'id'
  validate_attributes!
end

Instance Attribute Details

#dateObject

Returns the value of attribute date.



3
4
5
# File 'lib/totalizer/metric.rb', line 3

def date
  @date
end

#durationObject

Returns the value of attribute duration.



3
4
5
# File 'lib/totalizer/metric.rb', line 3

def duration
  @duration
end

#filterObject

Returns the value of attribute filter.



3
4
5
# File 'lib/totalizer/metric.rb', line 3

def filter
  @filter
end

#idsObject

Returns the value of attribute ids.



3
4
5
# File 'lib/totalizer/metric.rb', line 3

def ids
  @ids
end

#mapObject

Returns the value of attribute map.



3
4
5
# File 'lib/totalizer/metric.rb', line 3

def map
  @map
end

#modelObject

Returns the value of attribute model.



3
4
5
# File 'lib/totalizer/metric.rb', line 3

def model
  @model
end

#valueObject

Returns the value of attribute value.



3
4
5
# File 'lib/totalizer/metric.rb', line 3

def value
  @value
end

Instance Method Details

#attributesObject



14
15
16
# File 'lib/totalizer/metric.rb', line 14

def attributes
  { model: model, date: date, duration: duration, filter: filter, map: map }
end

#end_dateObject



18
19
20
# File 'lib/totalizer/metric.rb', line 18

def end_date
  date
end

#finishObject



46
47
48
# File 'lib/totalizer/metric.rb', line 46

def finish
  finish_ids.size
end

#finish_idsObject



42
43
44
# File 'lib/totalizer/metric.rb', line 42

def finish_ids
  @finish_ids ||= calculate(["created_at < ?", end_date])
end

#rateObject



50
51
52
# File 'lib/totalizer/metric.rb', line 50

def rate
  start == 0 ? 0 : (finish - start).to_f / start.to_f
end

#startObject



38
39
40
# File 'lib/totalizer/metric.rb', line 38

def start
  start_ids.size
end

#start_dateObject



22
23
24
# File 'lib/totalizer/metric.rb', line 22

def start_date
  date - duration.days
end

#start_idsObject



34
35
36
# File 'lib/totalizer/metric.rb', line 34

def start_ids
  @start_ids ||= calculate(["created_at < ?", start_date])
end