You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
2.6 KiB

6 months ago
require_relative '../../services/user-mover/export_user'
require_relative '../../services/user-mover/import_user'
namespace :cartodb do
namespace :user_mover do
namespace :export do
desc 'Export an user'
task :export_user, [:id, :path, :job_uuid, :schema_mode, :database_only, :metadata_only] => :environment do |_task, args|
args.with_defaults(job_uuid: nil, schema_mode: false, database_only: false, metadata_only: false)
job_args = args.to_hash
if job_args[:database_only] == 'true'
job_args[:data] = true
job_args[:metadata] = false
elsif job_args[:metadata_only] == 'true'
job_args[:data] = false
job_args[:metadata] = true
end
CartoDB::DataMover::ExportJob.new(job_args)
end
desc 'Export an organization'
task :export_org, [:organization_name, :path, :job_uuid, :database_only, :metadata_only, :split_user_schemas] => :environment do |_task, args|
args.with_defaults(job_uuid: nil, database_only: false, metadata_only: false)
job_args = args.to_hash
if job_args[:database_only] == 'true'
job_args[:data] = true
job_args[:metadata] = false
elsif job_args[:metadata_only] == 'true'
job_args[:data] = false
job_args[:metadata] = true
end
job_args[:split_user_schemas] = job_args[:split_user_schemas] == 'true' ? true : false
CartoDB::DataMover::ExportJob.new(job_args)
end
end
namespace :import do
desc 'Import a JSON export (either username or organization)'
task :import, [:file, :data_only, :into_org_name, :host, :job_uuid] => :environment do |_task, args|
args.with_defaults(job_uuid: nil, data_only: false, host: nil, rollback: false, into_org_name: nil, mode: :import)
job_args = args.to_hash
if job_args[:data_only] == 'true'
job_args[:data] = true
job_args[:metadata] = false
end
job_args[:into_org_name] = (job_args[:into_org] != '' ? args[:into_org] : nil)
CartoDB::DataMover::ImportJob.new(job_args).run!
end
desc 'Rollback from a JSON export (either username or organization)'
task :rollback, [:file, :data_only, :host] => :environment do |_task, args|
args.with_defaults(data_only: false, host: nil, rollback: false, mode: :rollback)
job_args = args.to_hash
if job_args[:data_only] == 'true'
job_args[:data] = true
job_args[:metadata] = false
end
CartoDB::DataMover::ImportJob.new(job_args).run!
end
end
end
end