summaryrefslogtreecommitdiff
path: root/lib/gitlab/usage_data_counters/issue_activity_unique_counter.rb
blob: b1ce46a1ff530bdf9d611c7086f415473edf75d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# frozen_string_literal: true

module Gitlab
  module UsageDataCounters
    module IssueActivityUniqueCounter
      ISSUE_CATEGORY = 'issues_edit'

      ISSUE_ASSIGNEE_CHANGED = 'g_project_management_issue_assignee_changed'
      ISSUE_CREATED = 'g_project_management_issue_created'
      ISSUE_CLOSED = 'g_project_management_issue_closed'
      ISSUE_DESCRIPTION_CHANGED = 'g_project_management_issue_description_changed'
      ISSUE_ITERATION_CHANGED = 'g_project_management_issue_iteration_changed'
      ISSUE_LABEL_CHANGED = 'g_project_management_issue_label_changed'
      ISSUE_MADE_CONFIDENTIAL = 'g_project_management_issue_made_confidential'
      ISSUE_MADE_VISIBLE = 'g_project_management_issue_made_visible'
      ISSUE_MILESTONE_CHANGED = 'g_project_management_issue_milestone_changed'
      ISSUE_REOPENED = 'g_project_management_issue_reopened'
      ISSUE_TITLE_CHANGED = 'g_project_management_issue_title_changed'
      ISSUE_WEIGHT_CHANGED = 'g_project_management_issue_weight_changed'

      class << self
        def track_issue_created_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_CREATED, author, time)
        end

        def track_issue_title_changed_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_TITLE_CHANGED, author, time)
        end

        def track_issue_description_changed_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_DESCRIPTION_CHANGED, author, time)
        end

        def track_issue_assignee_changed_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_ASSIGNEE_CHANGED, author, time)
        end

        def track_issue_made_confidential_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_MADE_CONFIDENTIAL, author, time)
        end

        def track_issue_made_visible_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_MADE_VISIBLE, author, time)
        end

        def track_issue_closed_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_CLOSED, author, time)
        end

        def track_issue_reopened_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_REOPENED, author, time)
        end

        def track_issue_label_changed_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_LABEL_CHANGED, author, time)
        end

        def track_issue_milestone_changed_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_MILESTONE_CHANGED, author, time)
        end

        def track_issue_iteration_changed_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_ITERATION_CHANGED, author, time)
        end

        def track_issue_weight_changed_action(author:, time: Time.zone.now)
          track_unique_action(ISSUE_WEIGHT_CHANGED, author, time)
        end

        private

        def track_unique_action(action, author, time)
          return unless Feature.enabled?(:track_issue_activity_actions)
          return unless author

          Gitlab::UsageDataCounters::HLLRedisCounter.track_event(author.id, action, time)
        end
      end
    end
  end
end