Module: Gitlab::Database::Aggregation::ParameterizedDefinition

Extended by:
ActiveSupport::Concern
Included in:
ActiveRecord::DateBucketDimension, ClickHouse::DateBucketDimension, ClickHouse::Quantile
Defined in:
lib/gitlab/database/aggregation/parameterized_definition.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#parametersObject (readonly)

Returns the value of attribute parameters.



15
16
17
# File 'lib/gitlab/database/aggregation/parameterized_definition.rb', line 15

def parameters
  @parameters
end

Instance Method Details

#initialize(*args, parameters: {}, **kwargs) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/gitlab/database/aggregation/parameterized_definition.rb', line 17

def initialize(*args, parameters: {}, **kwargs)
  super

  guard_parameters_definition!(parameters)

  @parameters = parameters || {}
end

#instance_key(configuration) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/gitlab/database/aggregation/parameterized_definition.rb', line 25

def instance_key(configuration)
  return super unless parameterized? && configuration[:parameters].present?

  parameters_postfix = parameters.keys.map { |p_key| instance_parameter(p_key, configuration) || '' }.join('_')

  unless /\A\w+\z/.match?(parameters_postfix)
    parameters_postfix = OpenSSL::Digest::SHA256.hexdigest(parameters_postfix)[0...5]
  end

  "#{super}_#{parameters_postfix}"
end