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_clauses ⇒ Object
101
102
103
104
105
106
|
# File 'lib/queries/concerns/confidences.rb', line 101
def self.merge_clauses
[
:confidences_facet,
:confidence_id_facets,
]
end
|
.params ⇒ Object
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_facets ⇒ Object
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_facet ⇒ Object
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_table ⇒ Arel::Table
65
66
67
|
# File 'lib/queries/concerns/confidences.rb', line 65
def confidence_table
::Confidence.arel_table
end
|
#confidences_facet ⇒ Object
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_facet ⇒ Object
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
|