# frozen_string_literal: true

namespace :dynamo do

desc 'Run dynamo migrations'
task migrate: :environment do
  Dynamo::Record::TaskHelpers::MigrationRunner.run { |msg| puts msg }
end

desc 'Drops all dynamo tables and re-runs migrations'
task reset: :environment do
  Rake::Task['dynamo:drop_all'].invoke
  Rake::Task['dynamo:migrate'].invoke
end

desc 'Drop all dynamo tables'
task :drop_all, [:override] => :environment do |_t, args|
  puts Dynamo::Record::TaskHelpers::DropAllTables.run args[:override]
end

desc 'Drop a specified dynamo table'
task :drop, [:table_name] => :environment do |_t, args|
  puts Dynamo::Record::TaskHelpers::DropTable.run args[:table_name]
end

desc 'List all tables with dynamo prefix'
task list_tables: :environment do
  puts Dynamo::Record::TaskHelpers::ListTables.run
end

desc 'Delete all records in all DyanmoDB tables.'
task cleanup: :environment do
  Dynamo::Record::TaskHelpers::Cleanup.run
  puts 'Finished deleting all records in all DynamoDB tables.'
end

desc 'Scale a dynamo table read/write capacity to the new capacity value provided'
task :scale, %i[model_name attribute new_throughput] => :environment do |_t, args|
  puts Dynamo::Record::TaskHelpers::Scale.new(args[:model_name], args[:attribute], args[:new_throughput].to_i).run
end

end