Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/usage/time_series_storable.rb')
-rw-r--r--lib/gitlab/usage/time_series_storable.rb22
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