Class: Ecoportal::API::GraphQL::Input::SearchConf::HasAny

Inherits:
Object
  • Object
show all
Includes:
Composable
Defined in:
lib/ecoportal/api/graphql/input/search_conf.rb

Overview


Filter: has_any_filter / doesnt_have_any_filter — register FIELD value membership (Select, CrossReference, People, …). Distinct from one_of (an OR of exact_filter, for SYSTEM keys): a register field matches via the nested membranes. path + a field_key subfield ('selected' for selects). See filter_contract_matrix.md +

backend Pages::*::HasAnyFilter.

Instance Method Summary collapse

Methods included from Composable

#&, #|

Constructor Details

#initialize(key, values, field_key: 'selected', exclude: false) ⇒ HasAny

Returns a new instance of HasAny.



159
160
161
162
163
164
# File 'lib/ecoportal/api/graphql/input/search_conf.rb', line 159

def initialize(key, values, field_key: 'selected', exclude: false)
  @key       = key.to_s
  @values    = Array(values)
  @field_key = field_key
  @exclude   = exclude
end

Instance Method Details

#substitute(subs) ⇒ Object



179
180
181
# File 'lib/ecoportal/api/graphql/input/search_conf.rb', line 179

def substitute(subs)
  self.class.new(@key, subs.fetch(:values, @values), field_key: @field_key, exclude: @exclude)
end

#to_hObject



166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/ecoportal/api/graphql/input/search_conf.rb', line 166

def to_h
  op = @exclude ? 'doesnt_have_any_filter' : 'has_any_filter'
  {
    operation: op,
    params:    {
      key:       @key,
      path:      MembranePath.membrane_path_for(@key),
      field_key: @field_key,
      values:    @values
    }
  }
end