Class: WorkerPlugins::SwitchQuery
Instance Method Summary
collapse
#db_now_value, #postgres?, #quote, #quote_column, #quote_table, #sqlite?
Instance Method Details
#ids_added_already ⇒ Object
26
27
28
29
30
31
32
|
# File 'app/services/worker_plugins/switch_query.rb', line 26
def ids_added_already
WorkerPlugins::SelectColumnWithTypeCast.execute!(
column_name_to_select: :resource_id,
column_to_compare_with: model_class.column_for_attribute(:id),
query: ids_added_already_query
)
end
|
#ids_added_already_query ⇒ Object
20
21
22
23
24
|
# File 'app/services/worker_plugins/switch_query.rb', line 20
def ids_added_already_query
workplace
.workplace_links
.where(resource_type: model_class.name, resource_id: query_with_selected_ids)
end
|
#model_class ⇒ Object
34
35
36
|
# File 'app/services/worker_plugins/switch_query.rb', line 34
def model_class
@model_class ||= query.klass
end
|
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# File 'app/services/worker_plugins/switch_query.rb', line 4
def perform
if resources_to_add.count.zero?
result = WorkerPlugins::RemoveQuery.execute!(query:, workplace:)
succeed!(
destroyed: result.fetch(:destroyed),
mode: :destroyed
)
else
result = WorkerPlugins::AddQuery.execute!(query:, workplace:)
succeed!(
created: result.fetch(:created),
mode: :created
)
end
end
|
#query_with_selected_ids ⇒ Object
#resources_to_add ⇒ Object
46
47
48
|
# File 'app/services/worker_plugins/switch_query.rb', line 46
def resources_to_add
@resources_to_add ||= query.where.not(id: ids_added_already)
end
|