Class: WorkerPlugins::RemoveQuery

Inherits:
ApplicationService show all
Defined in:
app/services/worker_plugins/remove_query.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationService

#db_now_value, #postgres?, #quote, #quote_column, #quote_table, #sqlite?

Instance Attribute Details

#destroyedObject (readonly)

Returns the value of attribute destroyed.



4
5
6
# File 'app/services/worker_plugins/remove_query.rb', line 4

def destroyed
  @destroyed
end

Instance Method Details

#model_classObject



17
18
19
# File 'app/services/worker_plugins/remove_query.rb', line 17

def model_class
  query.klass
end

#performObject



6
7
8
9
# File 'app/services/worker_plugins/remove_query.rb', line 6

def perform
  remove_query_from_workplace
  succeed!(destroyed:, mode: :destroyed)
end

#query_with_selected_idsObject



21
22
23
24
25
26
27
# File 'app/services/worker_plugins/remove_query.rb', line 21

def query_with_selected_ids
  WorkerPlugins::SelectColumnWithTypeCast.execute!(
    column_name_to_select: :id,
    column_to_compare_with: WorkerPlugins::WorkplaceLink.column_for_attribute(:resource_id),
    query: query.except(:order)
  )
end

#remove_query_from_workplaceObject



11
12
13
14
15
# File 'app/services/worker_plugins/remove_query.rb', line 11

def remove_query_from_workplace
  links_query = workplace.workplace_links.where(resource_type: model_class.name, resource_id: query_with_selected_ids)
  @destroyed = links_query.pluck(:resource_id)
  links_query.delete_all
end