namespace :mass_encryption do

task encrypt_all_in_tracks: :environment do
  from_id = ENV["FROM_ID"]
  only = MassEncryption::Tasks.classes_from(ENV["ONLY"])
  except = MassEncryption::Tasks.classes_from(ENV["EXCEPT"])
  tracks = (ENV["TRACKS"] || 1).to_i
  batch_size = (ENV["BATCH_SIZE"] || 1000).to_i

  MassEncryption::Encryptor.new(from_id: from_id, only: only, except: except, tracks_count: tracks, silent: false, batch_size: batch_size).encrypt_all_later
end

task encrypt_all_in_parallel_jobs: :environment do
  from_id = ENV["FROM_ID"]
  only = MassEncryption::Tasks.classes_from(ENV["ONLY"])
  except = MassEncryption::Tasks.classes_from(ENV["EXCEPT"])
  batch_size = (ENV["BATCH_SIZE"] || 1000).to_i

  MassEncryption::Encryptor.new(from_id: from_id, only: only, except: except, silent: false, batch_size: batch_size).encrypt_all_later
end

end

module MassEncryption::Tasks

extend self

def classes_from(string)
  if string.present?
    class_strings = string.split(/[\s,]/).filter(&:present?)
    class_strings.collect(&:constantize)
  end
end

end