Sha256: e4f2eba946935b9c8a73c4e8a941c55f52003e3d8415a57924781fe5f974e09a

Contents?: true

Size: 1.31 KB

Versions: 7

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

require 'active_support/all'
require_relative '../validators/params_validator'

module Gitlab
  module Triage
    module Filters
      class BaseConditionsFilter
        def initialize(resource, condition)
          @resource = resource
          validate_condition(condition)
          initialize_variables(condition)
        end

        def calculate
          raise NotImplementedError
        end

        def self.filter_parameters
          []
        end

        def self.params_filter_names(params = nil)
          params ||= filter_parameters

          params.pluck(:name)
        end

        def self.all_params_filter_names
          params_filter_names
        end

        def self.params_checking_condition_value
          params_filter_names params_check_for_field(:values)
        end

        def self.params_checking_condition_type
          params_filter_names params_check_for_field(:type)
        end

        def self.params_check_for_field(field)
          filter_parameters.select do |param|
            param[field].present?
          end
        end

        private

        def validate_condition(condition)
          ParamsValidator.new(self.class.filter_parameters, condition).validate!
        end

        def initialize_variables(condition); end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
gitlab-triage-1.44.3 lib/gitlab/triage/filters/base_conditions_filter.rb
gitlab-triage-1.44.2 lib/gitlab/triage/filters/base_conditions_filter.rb
gitlab-triage-1.44.1 lib/gitlab/triage/filters/base_conditions_filter.rb
gitlab-triage-1.44.0 lib/gitlab/triage/filters/base_conditions_filter.rb
gitlab-triage-1.43.2 lib/gitlab/triage/filters/base_conditions_filter.rb
gitlab-triage-1.43.1 lib/gitlab/triage/filters/base_conditions_filter.rb
gitlab-triage-1.43.0 lib/gitlab/triage/filters/base_conditions_filter.rb