Class: CodeSunset::FeatureUsageSeries

Inherits:
Object
  • Object
show all
Defined in:
lib/code_sunset/feature_usage_series.rb

Constant Summary collapse

DEFAULT_WINDOW_DAYS =
30

Instance Method Summary collapse

Constructor Details

#initialize(feature:, filters: {}) ⇒ FeatureUsageSeries

Returns a new instance of FeatureUsageSeries.



5
6
7
8
# File 'lib/code_sunset/feature_usage_series.rb', line 5

def initialize(feature:, filters: {})
  @feature = feature
  @filters = filters.to_h.symbolize_keys
end

Instance Method Details

#call ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/code_sunset/feature_usage_series.rb', line 10

def call
  date_range = normalized_range
  analytics = CodeSunset::AnalyticsFilters.new(filters)

  series = if analytics.raw_dimension_filters?
    effective_range = analytics.retain_range(date_range)
    feature.events.apply_filters(analytics.raw_filters).where(occurred_at: effective_range).group("DATE(occurred_at)").count
  else
    rollup_series = feature.daily_rollups.apply_filters(analytics.rollup_filters).where(day: date_range.first.to_date..date_range.last.to_date).group(:day).sum(:hits_count)
    raw_series_fallback(rollup_series, date_range, analytics)
  end

  fill_gaps(series, date_range)
end