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.
cartodb/script/20200921_do_datasets_redis_...

46 lines
1.5 KiB

4 years ago
#!/usr/bin/env ruby
# [RAILS_ENV=staging] bundle exec rails runner script/20200921_do_datasets_redis_report.rb
4 years ago
include ActionView::Helpers::NumberHelper
# header
puts "sync size\t\t datasets/total\t username"
total_space_needed = 0
4 years ago
$users_metadata.keys("do:*:datasets").each do |k|
4 years ago
begin
username = k.split(':')[1]
user = User.where(username: username).first
extra_quota_needed = 0
4 years ago
4 years ago
datasets = $users_metadata.hget(k, :bq)
datasets = JSON.parse(datasets)
4 years ago
4 years ago
user_datasets = []
syncable_datasets = []
datasets.map do |dataset|
# Do not process already enriched datasets:
4 years ago
if !(dataset['sync_status'].present?) then
4 years ago
begin
doss = Carto::DoSyncServiceFactory.get_for_user(user)
entity_info = doss.entity_info(dataset['dataset_id'])
num_bytes = entity_info['num_bytes'].to_i || 0
if num_bytes <= 2147483648 then
extra_quota_needed += num_bytes
syncable_datasets << dataset
end
user_datasets << dataset
rescue Google::Apis::ClientError => e
# pass
4 years ago
end
end
end
4 years ago
total_space_needed += extra_quota_needed
if !user_datasets.empty? then
# printing user's report:
puts "#{number_to_human_size(extra_quota_needed)}\t\t #{syncable_datasets.size}/#{user_datasets.size}\t\t #{username} "
end
rescue
puts "** Error with #{username} **"
4 years ago
end
end
puts "------\nTotal extra quota: #{number_to_human_size(total_space_needed)} (#{total_space_needed} bytes)"