mirror of
https://github.com/discourse/discourse.git
synced 2025-03-20 13:27:52 +08:00
FIX: 'clean up uploads' job
Only 1 query was needed.
This commit is contained in:
parent
30d0c84ece
commit
41cd438f0b
@ -6,25 +6,18 @@ module Jobs
|
||||
def execute(args)
|
||||
return unless SiteSetting.clean_up_uploads?
|
||||
|
||||
ignore_urls = []
|
||||
ignore_urls << UserProfile.uniq.where("profile_background IS NOT NULL AND profile_background != ''").pluck(:profile_background)
|
||||
ignore_urls << UserProfile.uniq.where("card_background IS NOT NULL AND card_background != ''").pluck(:card_background)
|
||||
ignore_urls << Category.uniq.where("logo_url IS NOT NULL AND logo_url != ''").pluck(:logo_url)
|
||||
ignore_urls << Category.uniq.where("background_url IS NOT NULL AND background_url != ''").pluck(:background_url)
|
||||
ignore_urls.flatten!
|
||||
|
||||
grace_period = [SiteSetting.clean_orphan_uploads_grace_period_hours, 1].max
|
||||
|
||||
Upload.where("created_at < ? AND
|
||||
(retain_hours IS NULL OR created_at < current_timestamp - interval '1 hour' * retain_hours )", grace_period.hour.ago)
|
||||
.where("id NOT IN (SELECT upload_id from post_uploads)")
|
||||
.where("id NOT IN (SELECT custom_upload_id from user_avatars)")
|
||||
.where("id NOT IN (SELECT gravatar_upload_id from user_avatars)")
|
||||
.where("url NOT IN (?)", ignore_urls)
|
||||
.find_each do |upload|
|
||||
upload.destroy
|
||||
end
|
||||
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user