Class: WorkerPlugins::Workplace

Inherits:
ApplicationRecord show all
Defined in:
app/models/worker_plugins/workplace.rb

Instance Method Summary collapse

Instance Method Details

#each_query_for_resourcesObject



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/models/worker_plugins/workplace.rb', line 24

def each_query_for_resources
  workplace_links.group("worker_plugins_workplace_links.resource_type").order("worker_plugins_workplace_links.id").each do |workplace_link|
    resource_type = workplace_link.resource_type
    constant = Object.const_get(resource_type)
    ids = workplace_links.where(resource_type: workplace_link.resource_type).pluck(:resource_id)

    ids.each_slice(500) do |ids_slice|
      query = constant.where(id: ids_slice)

      yield(query:, resource_type:)
    end
  end
end

#each_resource(limit: nil, types: nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/models/worker_plugins/workplace.rb', line 10

def each_resource(limit: nil, types: nil)
  count = 0

  links_query = workplace_links.order(:id)
  links_query = links_query.where(resource_type: types) if types
  links_query.find_in_batches do |workplace_links|
    workplace_links.each do |workplace_link|
      yield workplace_link.resource
      count += 1
      return if limit && count >= limit # rubocop:disable Lint/NonLocalExitFromIterator
    end
  end
end

#truncateObject



38
39
40
# File 'app/models/worker_plugins/workplace.rb', line 38

def truncate
  workplace_links.delete_all
end