46 lines
		
	
	
		
			923 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			923 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
class UnmergeWorker
 | 
						|
  include Sidekiq::Worker
 | 
						|
  include DatabaseHelper
 | 
						|
 | 
						|
  sidekiq_options queue: 'pull'
 | 
						|
 | 
						|
  def perform(from_account_id, into_id, type = 'home')
 | 
						|
    with_primary do
 | 
						|
      @from_account = Account.find(from_account_id)
 | 
						|
    end
 | 
						|
 | 
						|
    case type
 | 
						|
    when 'home'
 | 
						|
      unmerge_from_home!(into_id)
 | 
						|
    when 'list'
 | 
						|
      unmerge_from_list!(into_id)
 | 
						|
    end
 | 
						|
  rescue ActiveRecord::RecordNotFound
 | 
						|
    true
 | 
						|
  end
 | 
						|
 | 
						|
  private
 | 
						|
 | 
						|
  def unmerge_from_home!(into_account_id)
 | 
						|
    with_primary do
 | 
						|
      @into_account = Account.find(into_account_id)
 | 
						|
    end
 | 
						|
 | 
						|
    with_read_replica do
 | 
						|
      FeedManager.instance.unmerge_from_home(@from_account, @into_account)
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def unmerge_from_list!(into_list_id)
 | 
						|
    with_primary do
 | 
						|
      @into_list = List.find(into_list_id)
 | 
						|
    end
 | 
						|
 | 
						|
    with_read_replica do
 | 
						|
      FeedManager.instance.unmerge_from_list(@from_account, @into_list)
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |