44 lines
1.8 KiB
Ruby
44 lines
1.8 KiB
Ruby
|
# Datasets CSV example:
|
||
|
# dataset_id,available_in,price,expires_at,view_def
|
||
|
# carto-do-public-data.open_data.geography_usa_state_2015,bq;bigtable,999,2020-09-27T08:00:00
|
||
|
# carto-do-public-data.open_data.demographics_acs_usa_cbsaclipped_2015_yearly_2015,bq,2000,2020-09-27T08:00:00
|
||
|
namespace :cartodb do
|
||
|
namespace :data_observatory do
|
||
|
desc "Enables access to DO datasets for a user and saves the metadata in Central and Redis"
|
||
|
task :purchase_datasets, [:username, :datasets_csv] => [:environment] do |_, args|
|
||
|
username = args[:username]
|
||
|
datasets_csv = args[:datasets_csv]
|
||
|
usage = 'USAGE: data_observatory:purchase_datasets["username","path/datasets.csv"]'
|
||
|
raise usage unless username.present? && datasets_csv.present?
|
||
|
|
||
|
datasets = []
|
||
|
CSV.foreach(args[:datasets_csv], headers: true) do |row|
|
||
|
available_in = row['available_in'].split(';')
|
||
|
dataset = {
|
||
|
dataset_id: row['dataset_id'],
|
||
|
available_in: available_in,
|
||
|
price: row['price'].to_f,
|
||
|
expires_at: Time.parse(row['expires_at']),
|
||
|
view_def: row['view_def']
|
||
|
}
|
||
|
Carto::DoLicensingService.new(username).subscribe(dataset)
|
||
|
puts "#{row['dataset_id']} licensed succesfully"
|
||
|
end
|
||
|
|
||
|
puts 'Task finished succesfully!'
|
||
|
end
|
||
|
|
||
|
desc "Removes access to a DO dataset for a user and updates the metadata in Central and Redis"
|
||
|
task :remove_purchase, [:username, :dataset_id] => [:environment] do |_, args|
|
||
|
username = args[:username]
|
||
|
dataset_id = args[:dataset_id]
|
||
|
usage = 'USAGE: data_observatory:remove_purchase["username","project.schema.table"]'
|
||
|
raise usage unless username.present? && dataset_id.present?
|
||
|
|
||
|
Carto::DoLicensingService.new(username).unsubscribe(dataset_id)
|
||
|
|
||
|
puts 'Task finished succesfully!'
|
||
|
end
|
||
|
end
|
||
|
end
|