From a96f21134e877e799f5dce6cfb399e725bce27e2 Mon Sep 17 00:00:00 2001 From: Philipp Rothmann Date: Fri, 4 Aug 2023 10:57:11 +0200 Subject: [PATCH] feat(messages): attachment retention task --- config/app_config.yml.SAMPLE | 3 +++ config/schedule.rb | 3 ++- lib/tasks/foodsoft.rake | 15 ++++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/config/app_config.yml.SAMPLE b/config/app_config.yml.SAMPLE index 33a6b356..b43b7935 100644 --- a/config/app_config.yml.SAMPLE +++ b/config/app_config.yml.SAMPLE @@ -173,6 +173,9 @@ default: &defaults # default to allow automatically adding new articles on sync only when less than 200 articles in total #shared_supplier_article_sync_limit: 200 + # number of days after which attachment files get deleted + #attachment_retention_days: 365 + development: <<: *defaults diff --git a/config/schedule.rb b/config/schedule.rb index 72e3cbcc..6d424324 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -12,9 +12,10 @@ every :weekday, at: %w[5:56am 6:04pm] do rake 'multicoops:run TASK=foodsoft:import_and_assign_bank_transactions' end -# Weekly taks +# Weekly tasks every :sunday, at: '7:14 am' do rake 'multicoops:run TASK=foodsoft:create_upcoming_periodic_tasks' + rake 'multicoops:run TASKS=foodsoft:prune_old_attachments' end # Finish ended orders diff --git a/lib/tasks/foodsoft.rake b/lib/tasks/foodsoft.rake index 218bb39f..caa54a1a 100644 --- a/lib/tasks/foodsoft.rake +++ b/lib/tasks/foodsoft.rake @@ -1,6 +1,6 @@ # put in here all foodsoft tasks # => :environment loads the environment an gives easy access to the application -namespace :foodsoft do +namespace :foodsoft do # rubocop:disable Metrics/BlockLength desc 'Finish ended orders' task finish_ended_orders: :environment do Order.finish_ended! @@ -79,6 +79,19 @@ namespace :foodsoft do rake_say "#{ba.name}: imported #{importer.count}, assigned #{assign_count}" end end + + desc 'Prune attachments older than maximum age' + task prune_old_attachments: :environment do + if FoodsoftConfig[:attachment_retention_days] + rake_say "Pruning attachments older than #{FoodsoftConfig[:attachment_retention_days]} days" + ActiveStorage::Attachment.where("created_at < ?", FoodsoftConfig[:attachment_retention_days].days.ago).each do |attachment| + rake_say attachment.inspect + attachment.purge_later + end + else + rake_say "Please configure your app_config.yml accordingly:\nattachment_retention_days: " + end + end end # Helper