Class: WorkerPlugins::QueryLinksStatus
Instance Method Summary
collapse
#db_now_value, #mysql?, #postgres?, #quote, #quote_column, #quote_table, #relation_unscoped?, #sqlite?
Instance Method Details
#count_linked_rows(query_count) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'app/services/worker_plugins/query_links_status.rb', line 16
def count_linked_rows(query_count)
base_scope = workplace.workplace_links.where(resource_type: query.klass.name)
if relation_unscoped?(query)
[base_scope.count, query_count].min
else
base_scope.where(resource_id: query_with_selected_ids).count
end
end
|
4
5
6
7
8
9
10
11
12
13
14
|
# File 'app/services/worker_plugins/query_links_status.rb', line 4
def perform
query_count = query.count
checked_count = count_linked_rows(query_count)
succeed!(
all_checked: query_count == checked_count,
checked_count:,
query_count:,
some_checked: checked_count.positive? && checked_count < query_count
)
end
|
#query_with_selected_ids ⇒ Object
39
40
41
42
43
44
45
|
# File 'app/services/worker_plugins/query_links_status.rb', line 39
def query_with_selected_ids
WorkerPlugins::SelectColumnWithTypeCast.execute!(
column_name_to_select: query.klass.primary_key,
column_to_compare_with: WorkerPlugins::WorkplaceLink.column_for_attribute(:resource_id),
query: query.distinct
)
end
|