47 lines
1.1 KiB
Ruby
47 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab::UsageDataCounters
|
|
class NoteCounter < BaseCounter
|
|
KNOWN_EVENTS = %w[create].freeze
|
|
PREFIX = 'note'
|
|
COUNTABLE_TYPES = %w[Snippet Commit MergeRequest].freeze
|
|
|
|
class << self
|
|
def redis_key(event, noteable_type)
|
|
"#{super(event)}_#{noteable_type}".upcase
|
|
end
|
|
|
|
def count(event, noteable_type)
|
|
return unless countable?(noteable_type)
|
|
|
|
increment(redis_key(event, noteable_type))
|
|
end
|
|
|
|
def read(event, noteable_type)
|
|
return 0 unless countable?(noteable_type)
|
|
|
|
total_count(redis_key(event, noteable_type))
|
|
end
|
|
|
|
def totals
|
|
COUNTABLE_TYPES.to_h do |countable_type|
|
|
[counter_key(countable_type), read(:create, countable_type)]
|
|
end
|
|
end
|
|
|
|
def fallback_totals
|
|
COUNTABLE_TYPES.to_h { |counter_key| [counter_key(counter_key), -1] }
|
|
end
|
|
|
|
private
|
|
|
|
def counter_key(countable_type)
|
|
"#{countable_type.underscore}_comment".to_sym
|
|
end
|
|
|
|
def countable?(noteable_type)
|
|
COUNTABLE_TYPES.include?(noteable_type.to_s)
|
|
end
|
|
end
|
|
end
|
|
end
|