Module: Algolia::Recommend::OptionalFilters

Defined in:
lib/algolia/models/recommend/optional_filters.rb

Overview

Filters to promote or demote records in the search results. Optional filters work like facet filters, but they don’t exclude records from the search results. Records that match the optional filter rank before records that don’t match. If you’re using a negative filter ‘facet:-value`, matching records rank after records that don’t match. - Optional filters don’t work on virtual replicas. - Optional filters are applied after sort-by attributes. - Optional filters don’t work with numeric attributes.

Class Method Summary collapse

Class Method Details

.build(data) ⇒ Object

Builds the object

Parameters:

  • Data (Mixed)

    to be matched against the list of oneOf items

Returns:

  • (Object)

    Returns the model or the data itself



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/algolia/models/recommend/optional_filters.rb', line 22

def build(data)
  # Go through the list of oneOf items and attempt to identify the appropriate one.
  # Note:
  # - We do not attempt to check whether exactly one item matches.
  # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
  #   due to the way the deserialization is made in the base_object template (it just casts without verifying).
  # - TODO: scalar values are de facto behaving as if they were nullable.
  # - TODO: logging when debugging is set.
  openapi_one_of.each do |klass|
    begin
      # "nullable: true"
      next if klass == :AnyType
      typed_data = find_and_cast_into_type(klass, data)
      return typed_data if typed_data
      # rescue all errors so we keep iterating even if the current item lookup raises
    rescue
    end
  end

  openapi_one_of.include?(:AnyType) ? data : nil
end

.openapi_one_ofObject

List of class defined in oneOf (OpenAPI v3)



12
13
14
15
16
17
# File 'lib/algolia/models/recommend/optional_filters.rb', line 12

def openapi_one_of
  [
    :"Array<OptionalFilters>",
    :"String"
  ]
end