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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-11-15 06:11:37 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-11-15 06:11:37 +0300
commitaa9f2954530d4b43a4e3b190b7769fe5b6b6a64e (patch)
tree4f6f50b00030f7edc01a7ad23f5744a1abcde0aa /lib/gitlab/usage
parent38b948a54e00841b51c446beb0adf079af60c963 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/usage')
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric.rb54
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric.rb54
2 files changed, 108 insertions, 0 deletions
diff --git a/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric.rb b/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric.rb
new file mode 100644
index 00000000000..b1a2de29fd7
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class InProductMarketingEmailCtaClickedMetric < DatabaseMetric
+ operation :count
+
+ def initialize(metric_definition)
+ super
+
+ unless track.in?(allowed_track)
+ raise ArgumentError, "track '#{track}' must be one of: #{allowed_track.join(', ')}"
+ end
+
+ return if series.in?(allowed_series)
+
+ raise ArgumentError, "series '#{series}' must be one of: #{allowed_series.join(', ')}"
+ end
+
+ relation { Users::InProductMarketingEmail }
+
+ private
+
+ def relation
+ scope = super.where.not(cta_clicked_at: nil)
+ scope = scope.where(series: series)
+ scope.where(track: track)
+ end
+
+ def track
+ options[:track]
+ end
+
+ def series
+ options[:series]
+ end
+
+ def allowed_track
+ Users::InProductMarketingEmail::ACTIVE_TRACKS.keys
+ end
+
+ def allowed_series
+ @allowed_series ||= begin
+ series_amount = Namespaces::InProductMarketingEmailsService.email_count_for_track(track)
+ 0.upto(series_amount - 1).to_a
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric.rb b/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric.rb
new file mode 100644
index 00000000000..50dec606d9b
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class InProductMarketingEmailSentMetric < DatabaseMetric
+ operation :count
+
+ def initialize(metric_definition)
+ super
+
+ unless track.in?(allowed_track)
+ raise ArgumentError, "track '#{track}' must be one of: #{allowed_track.join(', ')}"
+ end
+
+ return if series.in?(allowed_series)
+
+ raise ArgumentError, "series '#{series}' must be one of: #{allowed_series.join(', ')}"
+ end
+
+ relation { Users::InProductMarketingEmail }
+
+ private
+
+ def relation
+ scope = super
+ scope = scope.where(series: series)
+ scope.where(track: track)
+ end
+
+ def track
+ options[:track]
+ end
+
+ def series
+ options[:series]
+ end
+
+ def allowed_track
+ Users::InProductMarketingEmail::ACTIVE_TRACKS.keys
+ end
+
+ def allowed_series
+ @allowed_series ||= begin
+ series_amount = Namespaces::InProductMarketingEmailsService.email_count_for_track(track)
+ 0.upto(series_amount - 1).to_a
+ end
+ end
+ end
+ end
+ end
+ end
+end