diff options
Diffstat (limited to 'lib/gitlab/usage/time_series_storable.rb')
-rw-r--r-- | lib/gitlab/usage/time_series_storable.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/gitlab/usage/time_series_storable.rb b/lib/gitlab/usage/time_series_storable.rb new file mode 100644 index 00000000000..83f62b8c1c7 --- /dev/null +++ b/lib/gitlab/usage/time_series_storable.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module TimeSeriesStorable + # requires a #redis_key(event, date) method to be defined + def keys_for_aggregation(events:, start_date:, end_date:) + # we always keep 1 week of margin + # .end_of_week is necessary to make sure this works for 1 week long periods too + end_date = end_date.end_of_week - 1.week + (start_date.to_date..end_date.to_date).flat_map do |date| + events.map { |event| redis_key(event, date) } + end.uniq + end + + def apply_time_aggregation(key, time) + year_week = time.strftime('%G-%V') + "#{key}-#{year_week}" + end + end + end +end |