Module: Queries::Concerns::Confidences

Overview

Query on confidence attributes

For filter queries: !! requires set_confidences_params be called in initialize()

Tested on spec/lib/queries/otu/filter_spec.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#boolean_param, #integer_param, #negate_facet, #split_pairs, #split_repeated_pairs, #tri_value_array

Class Method Details

.merge_clausesObject



101
102
103
104
105
106
# File 'lib/queries/concerns/confidences.rb', line 101

def self.merge_clauses
  [
    :confidences_facet,
    :confidence_id_facets,
  ]
end

.paramsObject



10
11
12
13
14
15
16
17
18
19
# File 'lib/queries/concerns/confidences.rb', line 10

def self.params
  [
    :confidences,
    :without_confidence_level_id,
    :confidence_level_id,
    :exclude_confidences,
    confidence_level_id: [],
    without_confidence_level_id: []
  ]
end

Instance Method Details

#confidence_id_facetsObject

Combines the With (confidence_level_id_facet) and Without (without_confidence_level_id_facet) selections from the Confidences UI facet, then optionally inverts the combined result via exclude_confidences.



93
94
95
96
97
98
99
# File 'lib/queries/concerns/confidences.rb', line 93

def confidence_id_facets
  clauses = [without_confidence_level_id_facet, confidence_level_id_facet].compact
  return nil if clauses.empty?

  q = clauses.size == 1 ? clauses.first : referenced_klass_intersection(clauses)
  exclude_confidences ? negate_facet(q) : q
end

#confidence_level_id_facetObject



69
70
71
72
# File 'lib/queries/concerns/confidences.rb', line 69

def confidence_level_id_facet
  return nil if confidence_level_id.empty?
  referenced_klass.joins(:confidences).where(confidences: {confidence_level_id: confidence_level_id}).distinct
end

#confidence_tableArel::Table

Returns:

  • (Arel::Table)


65
66
67
# File 'lib/queries/concerns/confidences.rb', line 65

def confidence_table
  ::Confidence.arel_table
end

#confidences_facetObject



81
82
83
84
85
86
87
88
# File 'lib/queries/concerns/confidences.rb', line 81

def confidences_facet
  return nil if confidences.nil?
  if confidences
    referenced_klass.joins(:confidences).distinct
  else
    referenced_klass.where.missing(:confidences)
  end
end

#set_confidences_params(params) ⇒ Object



57
58
59
60
61
62
# File 'lib/queries/concerns/confidences.rb', line 57

def set_confidences_params(params)
  @confidence_level_id = params[:confidence_level_id]
  @without_confidence_level_id = params[:without_confidence_level_id]
  @confidences = boolean_param(params, :confidences)
  @exclude_confidences = boolean_param(params, :exclude_confidences)
end

#without_confidence_level_id_facetObject



74
75
76
77
78
79
# File 'lib/queries/concerns/confidences.rb', line 74

def without_confidence_level_id_facet
  return nil if without_confidence_level_id.empty?
  not_these = referenced_klass.left_joins(:confidences).where(confidences: {confidence_level_id: without_confidence_level_id})

  negate_facet(not_these)
end