Class: Jobs::MigrateTaggingPlugin

Inherits:
Onceoff show all
Defined in:
app/jobs/onceoff/migrate_tagging_plugin.rb

Instance Method Summary collapse

Methods inherited from Onceoff

enqueue_all, #execute, name_for, #running_key_name

Methods inherited from Base

acquire_cluster_concurrency_lock!, clear_cluster_concurrency_lock!, cluster_concurrency, cluster_concurrency_redis_key, delayed_perform, #error_context, #execute, get_cluster_concurrency, #last_db_duration, #log, #perform, #perform_immediately

Instance Method Details

#execute_onceoff(args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/jobs/onceoff/migrate_tagging_plugin.rb', line 5

def execute_onceoff(args)
  all_tags = TopicCustomField.where(name: "tags").select("DISTINCT value").all.map(&:value)
  tag_id_lookup =
    Tag
      .create(all_tags.map { |tag_name| { name: tag_name } })
      .inject({}) do |h, v|
        h[v.name] = v.id
        h
      end

  TopicCustomField
    .where(name: "tags")
    .find_each do |tcf|
      TopicTag.create(
        topic_id: tcf.topic_id,
        tag_id: tag_id_lookup[tcf.value] || Tag.find_by_name(tcf.value).try(:id),
      )
    end
end