require 'rake'

namespace :cass do

namespace :schema do

  desc "Create the cassandra schema for all datastores"
  task :create_all, [:datastore] => :environment do |t, args|
    CassSchema::Runner.create_all
  end

  desc "Drop the cassandra schema for all datastores"
  task :drop_all, [:datastore] => :environment do |t, args|
    CassSchema::Runner.drop_all
  end

  desc "Create the cassandra schema for the specified datastore"
  task :create, [:datastore] => :environment do |t, args|
    raise ArgumentError.new('datastore argument required') unless args[:datastore]
    CassSchema::Runner.create(args[:datastore])
  end

  desc "Drop the cassandra schema for the specified datastore"
  task :drop, [:datastore] => :environment do |t, args|
    raise ArgumentError.new('datastore argument required') unless args[:datastore]
    CassSchema::Runner.drop(args[:datastore])
  end

  desc "Run the specified cassandra schema migration for the specified datastore"
  task :migrate, [:datastore, :migration] => :environment do |t, args|
    raise ArgumentError.new('datastore argument required') unless args[:datastore]
    raise ArgumentError.new('migration argument required') unless args[:migration]
    CassSchema::Runner.migrate(args[:datastore], args[:migration])
  end
end

end