# frozen_string_literal: true

desc 'Import dummy data into the database, to create a more realistic development experience'
task dummy_data: :environment do
  raise 'Only run this in development' unless Rails.env.development?

  domain = ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain

  admin = Account.find_by!(username: 'admin')

  accounts = 1.upto(1_000).map do |num|
    username = "#{Faker::Internet.username(separators: %w[_])}#{num}"
    password = Faker::Internet.password

    Account.create!(username: username).tap do |account|
      account.create_user!({
        email: "#{username}@#{domain}",
        password: password,
        password_confirmation: password,
        agreement: true,
        approved: true
      })
    end
  end

  accounts.each do |acct|
    FollowService.new.call(admin, acct)
  end

  statuses = (accounts + [admin]).map do |account|
    PostStatusService.new.call(account, text: Faker::Lorem.paragraph(sentence_count: 20))
  end

  accounts.sample(200).zip(statuses.sample(200)).each do |account, status|
    ReblogService.new.call(account, status)
  end
end