Compare commits

...

2 commits

Author SHA1 Message Date
simon lehericey
a37638283a add task to remove dol orphan 2023-10-11 17:37:08 +02:00
simon lehericey
af96551580 fix: destroy dossier_operation_logs with dossier
Quand on supprime un dossier, on veut supprimer tout les données relative à ce dossier, et donc également les dossier_operation_logs
2023-10-11 13:57:50 +02:00
2 changed files with 20 additions and 1 deletions

View file

@ -111,7 +111,7 @@ class Dossier < ApplicationRecord
end
has_one :traitement, -> { order(processed_at: :desc) }, inverse_of: false
has_many :dossier_operation_logs, -> { order(:created_at) }, inverse_of: :dossier
has_many :dossier_operation_logs, -> { order(:created_at) }, inverse_of: :dossier, dependent: :destroy
has_many :dossier_assignments, -> { order(:assigned_at) }, inverse_of: :dossier, dependent: :destroy
has_one :dossier_assignment, -> { order(assigned_at: :desc) }, inverse_of: false

View file

@ -0,0 +1,19 @@
namespace :after_party do
desc 'Deployment task: remove_orphan_dossier_operation_logs'
task remove_orphan_dossier_operation_logs: :environment do
puts "Running deploy task 'remove_orphan_dossier_operation_logs'"
orphan_dols = DossierOperationLog.where.missing(:dossier).limit(400_000)
batch_size = 1_000
progress = ProgressReport.new(orphan_dols.count)
orphan_dols.in_batches(of: batch_size) do |b|
b.destroy_all
progress.inc(batch_size)
end
AfterParty::TaskRecord
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
end
end