From aa1af9fc2294742258a35951ab8355c03ed993da Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 13 Sep 2018 16:08:15 +0800 Subject: [PATCH] FIX: Onceoff job to recover missing post uploads. This fixes the regression due to https://github.com/discourse/discourse/commit/1f636c445bcbc66b1765bcc3966887adcb14bdbf --- app/jobs/onceoff/recover_post_uploads.rb | 22 ++++++++++++++++++++++ spec/jobs/recover_post_uploads_spec.rb | 17 +++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 app/jobs/onceoff/recover_post_uploads.rb create mode 100644 spec/jobs/recover_post_uploads_spec.rb diff --git a/app/jobs/onceoff/recover_post_uploads.rb b/app/jobs/onceoff/recover_post_uploads.rb new file mode 100644 index 00000000000..ef3fb0b5aa2 --- /dev/null +++ b/app/jobs/onceoff/recover_post_uploads.rb @@ -0,0 +1,22 @@ +require_dependency "upload_recovery" + +module Jobs + class RecoverPostUploads < Jobs::Onceoff + MIN_PERIOD = 30 + MAX_PERIOD = 120 + + def execute_onceoff(args) + UploadRecovery.new.recover(Post.where( + "baked_at >= ?", + grace_period.days.ago + )) + end + + def grace_period + SiteSetting.purge_deleted_uploads_grace_period_days.clamp( + MIN_PERIOD, + MAX_PERIOD + ) + end + end +end diff --git a/spec/jobs/recover_post_uploads_spec.rb b/spec/jobs/recover_post_uploads_spec.rb new file mode 100644 index 00000000000..0448bc9adcf --- /dev/null +++ b/spec/jobs/recover_post_uploads_spec.rb @@ -0,0 +1,17 @@ +require 'rails_helper' + +RSpec.describe Jobs::RecoverPostUploads do + describe '#grace_period' do + it 'should restrict the grace period to the right range' do + SiteSetting.purge_deleted_uploads_grace_period_days = + described_class::MIN_PERIOD - 1 + + expect(described_class.new.grace_period).to eq(30) + + SiteSetting.purge_deleted_uploads_grace_period_days = + described_class::MAX_PERIOD + 1 + + expect(described_class.new.grace_period).to eq(120) + end + end +end