issue_activity_unique_counter.rb 5.69 KB
Newer Older
1 2 3 4 5
# frozen_string_literal: true

module Gitlab
  module UsageDataCounters
    module IssueActivityUniqueCounter
6 7
      ISSUE_CATEGORY = 'issues_edit'

8
      ISSUE_ASSIGNEE_CHANGED = 'g_project_management_issue_assignee_changed'
9 10 11 12
      ISSUE_CREATED = 'g_project_management_issue_created'
      ISSUE_CLOSED = 'g_project_management_issue_closed'
      ISSUE_DESCRIPTION_CHANGED = 'g_project_management_issue_description_changed'
      ISSUE_LABEL_CHANGED = 'g_project_management_issue_label_changed'
13 14
      ISSUE_MADE_CONFIDENTIAL = 'g_project_management_issue_made_confidential'
      ISSUE_MADE_VISIBLE = 'g_project_management_issue_made_visible'
15 16 17
      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'
18 19 20
      ISSUE_CROSS_REFERENCED = 'g_project_management_issue_cross_referenced'
      ISSUE_MOVED = 'g_project_management_issue_moved'
      ISSUE_RELATED = 'g_project_management_issue_related'
21
      ISSUE_CLONED = 'g_project_management_issue_cloned'
22 23 24 25
      ISSUE_UNRELATED = 'g_project_management_issue_unrelated'
      ISSUE_MARKED_AS_DUPLICATE = 'g_project_management_issue_marked_as_duplicate'
      ISSUE_LOCKED = 'g_project_management_issue_locked'
      ISSUE_UNLOCKED = 'g_project_management_issue_unlocked'
26 27 28
      ISSUE_DESIGNS_ADDED = 'g_project_management_issue_designs_added'
      ISSUE_DESIGNS_MODIFIED = 'g_project_management_issue_designs_modified'
      ISSUE_DESIGNS_REMOVED = 'g_project_management_issue_designs_removed'
29 30 31
      ISSUE_DUE_DATE_CHANGED = 'g_project_management_issue_due_date_changed'
      ISSUE_TIME_ESTIMATE_CHANGED = 'g_project_management_issue_time_estimate_changed'
      ISSUE_TIME_SPENT_CHANGED = 'g_project_management_issue_time_spent_changed'
32 33 34
      ISSUE_COMMENT_ADDED = 'g_project_management_issue_comment_added'
      ISSUE_COMMENT_EDITED = 'g_project_management_issue_comment_edited'
      ISSUE_COMMENT_REMOVED = 'g_project_management_issue_comment_removed'
35 36

      class << self
Jarka Košanová's avatar
Jarka Košanová committed
37 38
        def track_issue_created_action(author:)
          track_unique_action(ISSUE_CREATED, author)
39 40
        end

Jarka Košanová's avatar
Jarka Košanová committed
41 42
        def track_issue_title_changed_action(author:)
          track_unique_action(ISSUE_TITLE_CHANGED, author)
43 44
        end

Jarka Košanová's avatar
Jarka Košanová committed
45 46
        def track_issue_description_changed_action(author:)
          track_unique_action(ISSUE_DESCRIPTION_CHANGED, author)
47 48
        end

Jarka Košanová's avatar
Jarka Košanová committed
49 50
        def track_issue_assignee_changed_action(author:)
          track_unique_action(ISSUE_ASSIGNEE_CHANGED, author)
51 52
        end

Jarka Košanová's avatar
Jarka Košanová committed
53 54
        def track_issue_made_confidential_action(author:)
          track_unique_action(ISSUE_MADE_CONFIDENTIAL, author)
55 56
        end

Jarka Košanová's avatar
Jarka Košanová committed
57 58
        def track_issue_made_visible_action(author:)
          track_unique_action(ISSUE_MADE_VISIBLE, author)
59 60
        end

Jarka Košanová's avatar
Jarka Košanová committed
61 62
        def track_issue_closed_action(author:)
          track_unique_action(ISSUE_CLOSED, author)
63 64
        end

Jarka Košanová's avatar
Jarka Košanová committed
65 66
        def track_issue_reopened_action(author:)
          track_unique_action(ISSUE_REOPENED, author)
67 68
        end

Jarka Košanová's avatar
Jarka Košanová committed
69 70
        def track_issue_label_changed_action(author:)
          track_unique_action(ISSUE_LABEL_CHANGED, author)
71 72
        end

Jarka Košanová's avatar
Jarka Košanová committed
73 74
        def track_issue_milestone_changed_action(author:)
          track_unique_action(ISSUE_MILESTONE_CHANGED, author)
75 76
        end

Jarka Košanová's avatar
Jarka Košanová committed
77 78
        def track_issue_cross_referenced_action(author:)
          track_unique_action(ISSUE_CROSS_REFERENCED, author)
79 80
        end

Jarka Košanová's avatar
Jarka Košanová committed
81 82
        def track_issue_moved_action(author:)
          track_unique_action(ISSUE_MOVED, author)
83 84
        end

Jarka Košanová's avatar
Jarka Košanová committed
85 86
        def track_issue_related_action(author:)
          track_unique_action(ISSUE_RELATED, author)
87 88
        end

Jarka Košanová's avatar
Jarka Košanová committed
89 90
        def track_issue_unrelated_action(author:)
          track_unique_action(ISSUE_UNRELATED, author)
91 92
        end

Jarka Košanová's avatar
Jarka Košanová committed
93 94
        def track_issue_marked_as_duplicate_action(author:)
          track_unique_action(ISSUE_MARKED_AS_DUPLICATE, author)
95 96
        end

Jarka Košanová's avatar
Jarka Košanová committed
97 98
        def track_issue_locked_action(author:)
          track_unique_action(ISSUE_LOCKED, author)
99 100
        end

Jarka Košanová's avatar
Jarka Košanová committed
101 102
        def track_issue_unlocked_action(author:)
          track_unique_action(ISSUE_UNLOCKED, author)
103 104
        end

Jarka Košanová's avatar
Jarka Košanová committed
105 106
        def track_issue_designs_added_action(author:)
          track_unique_action(ISSUE_DESIGNS_ADDED, author)
107 108
        end

Jarka Košanová's avatar
Jarka Košanová committed
109 110
        def track_issue_designs_modified_action(author:)
          track_unique_action(ISSUE_DESIGNS_MODIFIED, author)
111 112
        end

Jarka Košanová's avatar
Jarka Košanová committed
113 114
        def track_issue_designs_removed_action(author:)
          track_unique_action(ISSUE_DESIGNS_REMOVED, author)
115 116
        end

Jarka Košanová's avatar
Jarka Košanová committed
117 118
        def track_issue_due_date_changed_action(author:)
          track_unique_action(ISSUE_DUE_DATE_CHANGED, author)
119 120
        end

Jarka Košanová's avatar
Jarka Košanová committed
121 122
        def track_issue_time_estimate_changed_action(author:)
          track_unique_action(ISSUE_TIME_ESTIMATE_CHANGED, author)
123 124
        end

Jarka Košanová's avatar
Jarka Košanová committed
125 126
        def track_issue_time_spent_changed_action(author:)
          track_unique_action(ISSUE_TIME_SPENT_CHANGED, author)
127 128
        end

Jarka Košanová's avatar
Jarka Košanová committed
129 130
        def track_issue_comment_added_action(author:)
          track_unique_action(ISSUE_COMMENT_ADDED, author)
131 132
        end

Jarka Košanová's avatar
Jarka Košanová committed
133 134
        def track_issue_comment_edited_action(author:)
          track_unique_action(ISSUE_COMMENT_EDITED, author)
135 136
        end

Jarka Košanová's avatar
Jarka Košanová committed
137 138
        def track_issue_comment_removed_action(author:)
          track_unique_action(ISSUE_COMMENT_REMOVED, author)
139 140
        end

Jarka Košanová's avatar
Jarka Košanová committed
141 142
        def track_issue_cloned_action(author:)
          track_unique_action(ISSUE_CLONED, author)
143 144
        end

145 146
        private

Jarka Košanová's avatar
Jarka Košanová committed
147
        def track_unique_action(action, author)
148 149
          return unless author

Jarka Košanová's avatar
Jarka Košanová committed
150
          Gitlab::UsageDataCounters::HLLRedisCounter.track_event(action, values: author.id)
151 152 153 154 155
        end
      end
    end
  end
end
156

157
Gitlab::UsageDataCounters::IssueActivityUniqueCounter.prepend_mod_with('EE::Gitlab::UsageDataCounters::IssueActivityUniqueCounter')