discourse/app/jobs/scheduled/clean_up_uploads.rb
Régis Hanol 41cd438f0b FIX: 'clean up uploads' job
Only 1 query was needed.
2015-05-22 20:28:52 +02:00

26 lines
960 B
Ruby

module Jobs
class CleanUpUploads < Jobs::Scheduled
every 1.hour
def execute(args)
return unless SiteSetting.clean_up_uploads?
grace_period = [SiteSetting.clean_orphan_uploads_grace_period_hours, 1].max
Upload.where("created_at < ?", grace_period.hour.ago)
.where("retain_hours IS NULL OR created_at < current_timestamp - interval '1 hour' * retain_hours")
.where("id NOT IN (SELECT upload_id FROM post_uploads)")
.where("id NOT IN (SELECT uploaded_avatar_id FROM users)")
.where("id NOT IN (SELECT gravatar_upload_id FROM user_avatars)")
.where("url NOT IN (SELECT profile_background FROM user_profiles)")
.where("url NOT IN (SELECT card_background FROM user_profiles)")
.where("url NOT IN (SELECT logo_url FROM categories)")
.where("url NOT IN (SELECT background_url FROM categories)")
.destroy_all
end
end
end