12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # frozen_string_literal: true
- class MergeWorker
- include Sidekiq::Worker
- include Redisable
- include DatabaseHelper
- def perform(from_account_id, into_id, type = 'home')
- with_primary do
- @from_account = Account.find(from_account_id)
- end
- case type
- when 'home'
- merge_into_home!(into_id)
- when 'list'
- merge_into_list!(into_id)
- end
- rescue ActiveRecord::RecordNotFound
- true
- end
- private
- def merge_into_home!(into_account_id)
- with_primary do
- @into_account = Account.find(into_account_id)
- end
- with_read_replica do
- FeedManager.instance.merge_into_home(@from_account, @into_account)
- end
- ensure
- redis.del("account:#{into_account_id}:regeneration")
- end
- def merge_into_list!(into_list_id)
- with_primary do
- @into_list = List.find(into_list_id)
- end
- with_read_replica do
- FeedManager.instance.merge_into_list(@from_account, @into_list)
- end
- end
- end
|