Class: LcpRuby::Search::FilterMetadataBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/search/filter_metadata_builder.rb

Constant Summary collapse

EXCLUDED_FIELD_NAMES =
%w[id created_at updated_at].freeze
EXCLUDED_FIELD_TYPES =
%w[attachment rich_text json].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(presenter_definition, model_definition, evaluator) ⇒ FilterMetadataBuilder

Returns a new instance of FilterMetadataBuilder.



9
10
11
12
13
# File 'lib/lcp_ruby/search/filter_metadata_builder.rb', line 9

def initialize(presenter_definition, model_definition, evaluator)
  @presenter_definition = presenter_definition
  @model_definition = model_definition
  @evaluator = evaluator
end

Instance Attribute Details

#evaluatorObject (readonly)

Returns the value of attribute evaluator.



7
8
9
# File 'lib/lcp_ruby/search/filter_metadata_builder.rb', line 7

def evaluator
  @evaluator
end

#model_definitionObject (readonly)

Returns the value of attribute model_definition.



7
8
9
# File 'lib/lcp_ruby/search/filter_metadata_builder.rb', line 7

def model_definition
  @model_definition
end

#presenter_definitionObject (readonly)

Returns the value of attribute presenter_definition.



7
8
9
# File 'lib/lcp_ruby/search/filter_metadata_builder.rb', line 7

def presenter_definition
  @presenter_definition
end

Instance Method Details

#buildObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/lcp_ruby/search/filter_metadata_builder.rb', line 15

def build
  {
    fields: build_fields,
    operator_labels: build_operator_labels,
    no_value_operators: OperatorRegistry::NO_VALUE_OPERATORS.map(&:to_s),
    multi_value_operators: OperatorRegistry::MULTI_VALUE_OPERATORS.map(&:to_s),
    range_operators: OperatorRegistry::RANGE_OPERATORS.map(&:to_s),
    parameterized_operators: OperatorRegistry::PARAMETERIZED_OPERATORS.map(&:to_s),
    presets: advanced_filter_config["presets"] || [],
    scopes: build_parameterized_scopes,
    config: {
      max_conditions: advanced_filter_config["max_conditions"] || 10,
      default_combinator: advanced_filter_config["default_combinator"] || "and",
      allow_or_groups: advanced_filter_config.fetch("allow_or_groups", true),
      query_language: advanced_filter_config.fetch("query_language", false),
      max_nesting_depth: advanced_filter_config["max_nesting_depth"] || 2
    }
  }
end