Class: Gitlab::Usage::Metrics::Instrumentations::BaseIntegrationsMetric

Inherits:
DatabaseMetric show all
Defined in:
lib/gitlab/usage/metrics/instrumentations/base_integrations_metric.rb

Constant Summary

Constants inherited from DatabaseMetric

DatabaseMetric::UnimplementedOperationError

Constants included from TimeFrame

TimeFrame::ALL_TIME_TIME_FRAME_NAME, TimeFrame::DEFAULT_TIMESTAMP_COLUMN, TimeFrame::SEVEN_DAYS_TIME_FRAME_NAME, TimeFrame::TWENTY_EIGHT_DAYS_TIME_FRAME_NAME

Constants included from Gitlab::Utils::UsageData

Gitlab::Utils::UsageData::DISTRIBUTED_HLL_FALLBACK, Gitlab::Utils::UsageData::FALLBACK, Gitlab::Utils::UsageData::HISTOGRAM_FALLBACK, Gitlab::Utils::UsageData::MAX_BUCKET_SIZE

Instance Attribute Summary

Attributes inherited from BaseMetric

#events, #metric_definition, #options, #time_frame

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from DatabaseMetric

cache_start_and_finish_as, finish, #instrumentation, metric_options, operation, relation, start, timestamp_column, #to_sql, #value

Methods inherited from BaseMetric

available?, #instrumentation

Methods included from TimeFrame

#monthly_time_range, #monthly_time_range_db_params, #weekly_time_range, #weekly_time_range_db_params

Methods included from Gitlab::Utils::UsageData

#add, #add_metric, #alt_usage_data, #average, #count, #distinct_count, #estimate_batch_distinct_count, #histogram, #maximum_id, #measure_duration, #metrics_collection_metadata, #minimum_id, #redis_usage_data, #sum, #track_usage_event, #with_finished_at, #with_metadata, #with_prometheus_client

Constructor Details

#initialize(metric_definition) ⇒ BaseIntegrationsMetric

Returns a new instance of BaseIntegrationsMetric.

Raises:

  • (ArgumentError)


22
23
24
25
26
27
28
# File 'lib/gitlab/usage/metrics/instrumentations/base_integrations_metric.rb', line 22

def initialize(metric_definition)
  super

  return if options[:type]

  raise ArgumentError, "'type' option is required"
end

Class Method Details

.integrations_name(options) ⇒ Object

Usage Example

class ActiveGroupIntegrationsMetric < BaseIntegrationsMetric

operation :count

relation do |database_time_constraints|
  Integration.active.where.not(group: nil).where(type: integrations_name(options))
end

end



18
19
20
# File 'lib/gitlab/usage/metrics/instrumentations/base_integrations_metric.rb', line 18

def self.integrations_name(options)
  Integration.integration_name_to_type(options[:type])
end

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/gitlab/usage/metrics/instrumentations/base_integrations_metric.rb', line 30

def available?
  options[:type].in?(allowed_types)
end