Class: WorkerPlugins::SwitchCollection
Instance Attribute Summary collapse
Instance Method Summary
collapse
#db_now_value, #postgres?, #quote, #sqlite?
Constructor Details
#initialize(query:, workplace:) ⇒ SwitchCollection
4
5
6
7
|
# File 'app/services/worker_plugins/switch_collection.rb', line 4
def initialize(query:, workplace:)
@query = query
@workplace = workplace
end
|
Instance Attribute Details
#query ⇒ Object
Returns the value of attribute query.
2
3
4
|
# File 'app/services/worker_plugins/switch_collection.rb', line 2
def query
@query
end
|
#workplace ⇒ Object
Returns the value of attribute workplace.
2
3
4
|
# File 'app/services/worker_plugins/switch_collection.rb', line 2
def workplace
@workplace
end
|
Instance Method Details
#ids_added_already ⇒ Object
31
32
33
34
35
36
37
|
# File 'app/services/worker_plugins/switch_collection.rb', line 31
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
25
26
27
28
29
|
# File 'app/services/worker_plugins/switch_collection.rb', line 25
def ids_added_already_query
workplace
.workplace_links
.where(resource_type: model_class.name, resource_id: query_with_selected_ids)
end
|
#model_class ⇒ Object
39
40
41
|
# File 'app/services/worker_plugins/switch_collection.rb', line 39
def model_class
@model_class ||= query.klass
end
|
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'app/services/worker_plugins/switch_collection.rb', line 9
def perform
if resources_to_add.count.zero?
result = WorkerPlugins::RemoveCollection.execute!(query: query, workplace: workplace)
succeed!(
destroyed: result.fetch(:destroyed),
mode: :destroyed
)
else
result = WorkerPlugins::AddCollection.execute!(query: query, workplace: workplace)
succeed!(
created: result.fetch(:created),
mode: :created
)
end
end
|
#query_with_selected_ids ⇒ Object
#resources_to_add ⇒ Object
51
52
53
|
# File 'app/services/worker_plugins/switch_collection.rb', line 51
def resources_to_add
@resources_to_add ||= query.where.not(id: ids_added_already)
end
|