Class: Card::LookupFilterQuery
- Inherits:
-
Object
- Object
- Card::LookupFilterQuery
show all
- Includes:
- Filtering
- Defined in:
- lib/card/lookup_filter_query.rb,
lib/card/lookup_filter_query/filtering.rb,
lib/card/lookup_filter_query/active_record_extension.rb
Overview
base class for FilterQuery classes built on lookup tables
Defined Under Namespace
Modules: ActiveRecordExtension, Filtering
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Filtering
#add_condition, #db_operator, #db_value, #filter, #filter_card_id, #filter_exact_match, #filter_method, #filter_table, #normalize_filter_args, #not_ids_query, #op_and_val, #process_filter_option, #process_filters, #restrict_by_cql, #restrict_lookup_ids, #restrict_to_ids, #to_card_id
Constructor Details
#initialize(filter, sorting = {}, paging = {}) ⇒ LookupFilterQuery
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/card/lookup_filter_query.rb', line 9
def initialize filter, sorting={}, paging={}
@filter_args = filter
@sort_args = sorting
@paging_args = paging
@conditions = []
@joins = []
@values = []
@restrict_to_ids = {}
process_sort
process_filters
end
|
Instance Attribute Details
#filter_args ⇒ Object
Returns the value of attribute filter_args.
6
7
8
|
# File 'lib/card/lookup_filter_query.rb', line 6
def filter_args
@filter_args
end
|
#paging_args ⇒ Object
Returns the value of attribute paging_args.
6
7
8
|
# File 'lib/card/lookup_filter_query.rb', line 6
def paging_args
@paging_args
end
|
#sort_args ⇒ Object
Returns the value of attribute sort_args.
6
7
8
|
# File 'lib/card/lookup_filter_query.rb', line 6
def sort_args
@sort_args
end
|
Instance Method Details
#condition_sql(conditions) ⇒ Object
33
34
35
|
# File 'lib/card/lookup_filter_query.rb', line 33
def condition_sql conditions
lookup_class.sanitize_sql_for_conditions conditions
end
|
#count ⇒ Array
56
57
58
|
# File 'lib/card/lookup_filter_query.rb', line 56
def count
@empty_result ? 0 : main_query.count
end
|
#limit ⇒ Object
60
61
62
|
# File 'lib/card/lookup_filter_query.rb', line 60
def limit
@paging_args[:limit]
end
|
#lookup_conditions ⇒ Object
42
43
44
|
# File 'lib/card/lookup_filter_query.rb', line 42
def lookup_conditions
condition_sql([@conditions.join(" AND ")] + @values)
end
|
#lookup_query ⇒ Object
23
24
25
26
27
|
# File 'lib/card/lookup_filter_query.rb', line 23
def lookup_query
q = lookup_class.where lookup_conditions
q = q.joins(@joins.uniq) if @joins.present?
q
end
|
#lookup_relation ⇒ Object
37
38
39
|
# File 'lib/card/lookup_filter_query.rb', line 37
def lookup_relation
sort_and_page { lookup_query }
end
|
#lookup_table ⇒ Object
29
30
31
|
# File 'lib/card/lookup_filter_query.rb', line 29
def lookup_table
@lookup_table ||= lookup_class.arel_table.name
end
|
#main_query ⇒ Object
64
65
66
|
# File 'lib/card/lookup_filter_query.rb', line 64
def main_query
@main_query ||= lookup_query
end
|
#main_results ⇒ Object
68
69
70
71
|
# File 'lib/card/lookup_filter_query.rb', line 68
def main_results
lookup_relation.map(&:card)
end
|
#run ⇒ Object
51
52
53
|
# File 'lib/card/lookup_filter_query.rb', line 51
def run
@empty_result ? [] : main_results
end
|