# Sweep trashed collections
Collection.
where('delete_at is not null and delete_at < statement_timestamp()').
+ in_batches(of: 15).
destroy_all
Collection.
where('is_trashed = false and trash_at < statement_timestamp()').
+ in_batches(of: 15).
update_all('is_trashed = true')
# Sweep trashed projects and their contents (as well as role
def delete_project_and_contents(p_uuid)
p = Group.find_by_uuid(p_uuid)
- if !p || p.group_class != 'project'
- raise "can't sweep group '#{p_uuid}', it may not exist or not be a project"
+ if !p
+ raise "can't sweep group '#{p_uuid}', it may not exist"
end
# First delete sub projects
Group.where({group_class: 'project', owner_uuid: p_uuid}).each do |sub_project|
skipped_classes = ['Group', 'User']
ActiveRecord::Base.descendants.reject(&:abstract_class?).each do |klass|
if !skipped_classes.include?(klass.name) && klass.columns.collect(&:name).include?('owner_uuid')
- klass.where({owner_uuid: p_uuid}).destroy_all
+ klass.where({owner_uuid: p_uuid}).in_batches(of: 15).destroy_all
end
end
# Finally delete the project itself