2019-07-17 23:45:35 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Gitlab
|
|
|
|
module UsageDataCounters
|
|
|
|
class WebIdeCounter
|
|
|
|
extend RedisCounter
|
2020-05-11 18:09:55 +00:00
|
|
|
KNOWN_EVENTS = %i[commits views merge_requests previews terminals].freeze
|
2020-05-06 03:09:33 +00:00
|
|
|
PREFIX = 'web_ide'
|
2019-07-17 23:45:35 +00:00
|
|
|
|
|
|
|
class << self
|
|
|
|
def increment_commits_count
|
2020-05-06 03:09:33 +00:00
|
|
|
increment(redis_key('commits'))
|
2019-07-17 23:45:35 +00:00
|
|
|
end
|
2019-07-19 11:11:27 +00:00
|
|
|
|
|
|
|
def increment_merge_requests_count
|
2020-05-06 03:09:33 +00:00
|
|
|
increment(redis_key('merge_requests'))
|
2019-07-19 11:11:27 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def increment_views_count
|
2020-05-06 03:09:33 +00:00
|
|
|
increment(redis_key('views'))
|
2019-07-19 11:11:27 +00:00
|
|
|
end
|
2019-07-21 01:26:19 +00:00
|
|
|
|
2020-05-11 18:09:55 +00:00
|
|
|
def increment_terminals_count
|
|
|
|
increment(redis_key('terminals'))
|
|
|
|
end
|
|
|
|
|
2019-11-06 09:06:23 +00:00
|
|
|
def increment_previews_count
|
|
|
|
return unless Gitlab::CurrentSettings.web_ide_clientside_preview_enabled?
|
|
|
|
|
2020-05-06 03:09:33 +00:00
|
|
|
increment(redis_key('previews'))
|
2019-11-06 09:06:23 +00:00
|
|
|
end
|
|
|
|
|
2020-05-06 03:09:33 +00:00
|
|
|
def totals
|
|
|
|
KNOWN_EVENTS.map { |event| [counter_key(event), total_count(redis_key(event))] }.to_h
|
2019-11-06 09:06:23 +00:00
|
|
|
end
|
|
|
|
|
2020-05-06 03:09:33 +00:00
|
|
|
def fallback_totals
|
|
|
|
KNOWN_EVENTS.map { |event| [counter_key(event), -1] }.to_h
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def redis_key(event)
|
|
|
|
"#{PREFIX}_#{event}_count".upcase
|
|
|
|
end
|
|
|
|
|
|
|
|
def counter_key(event)
|
|
|
|
"#{PREFIX}_#{event}".to_sym
|
2019-07-21 01:26:19 +00:00
|
|
|
end
|
2019-07-17 23:45:35 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|