class Gitlab::Triage::ParamBuilders::DateParamBuilder

Constants

CONDITIONS
INTERVAL_TYPES

Attributes

allowed_attributes[R]
attribute[R]
interval[R]
interval_condition[R]
interval_type[R]

Public Class Methods

new(allowed_attributes, condition_hash) click to toggle source
# File lib/gitlab/triage/param_builders/date_param_builder.rb, line 10
def initialize(allowed_attributes, condition_hash)
  @allowed_attributes = allowed_attributes
  @attribute = condition_hash[:attribute].to_s
  @interval_condition = condition_hash[:condition].to_sym
  @interval_type = condition_hash[:interval_type]
  @interval = condition_hash[:interval]

  validate_condition(condition_hash)
end

Public Instance Methods

param_content() click to toggle source
# File lib/gitlab/triage/param_builders/date_param_builder.rb, line 20
def param_content
  interval.public_send(interval_type).ago.to_date # rubocop:disable GitlabSecurity/PublicSend
end

Private Instance Methods

filter_parameters() click to toggle source
# File lib/gitlab/triage/param_builders/date_param_builder.rb, line 32
def filter_parameters
  [
    {
      name: :attribute,
      type: String,
      values: allowed_attributes
    },
    {
      name: :condition,
      type: String,
      values: CONDITIONS
    },
    {
      name: :interval_type,
      type: String,
      values: INTERVAL_TYPES
    },
    {
      name: :interval,
      type: Numeric
    }
  ]
end
validate_condition(condition) click to toggle source
# File lib/gitlab/triage/param_builders/date_param_builder.rb, line 28
def validate_condition(condition)
  ParamsValidator.new(filter_parameters, condition).validate!
end