# frozen_string_literal: true

namespace :comunit do

desc 'Update site id to uuid in users'
task update_user_sites: :environment do
  puts "Total user count: #{User.count}"
  updates = 0
  User.order('id asc').each do |user|
    site_id = user.data.dig('comunit', 'site_id')

    if site_id.nil? && user.respond_to?(:site_id)
      site_id = user.site_id
    end

    print "\r#{user.id}: #{user.slug} #{site_id.inspect} "
    next if site_id.blank?

    site = Site.find_by(id: site_id)
    next if site.nil?

    user.data['comunit'] ||= {}
    user.data['comunit']['site_id'] = site.uuid
    user.save!
    updates += 1
  end

  puts "\nDone. Updated #{updates} users"
end

end