1 changed files with 34 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||||||
|
desc "Deletes all logs in a given collection year and earlier. Note that this operation is PERMANENT and this will bypass callbacks/paper trail. Use only as instructed in a yearly cleanup task." |
||||||
|
task :delete_logs_before_year, %i[year] => :environment do |_task, args| |
||||||
|
year = args[:year].to_i |
||||||
|
|
||||||
|
if year < 2020 |
||||||
|
raise ArgumentError, "Year must be above 2020. Make sure you've written out the entire year" |
||||||
|
end |
||||||
|
|
||||||
|
if year > Time.zone.now.year - 3 |
||||||
|
raise ArgumentError, "Year cannot be the last 3 years, as these may contain visible logs" |
||||||
|
end |
||||||
|
|
||||||
|
puts "Deleting Logs before #{year}" |
||||||
|
|
||||||
|
puts "Deleting Sales Logs in batches of 10000" |
||||||
|
logs = SalesLog.filter_by_year_or_earlier(year) |
||||||
|
|
||||||
|
logs.in_batches(of: 10_000).each_with_index do |logs, i| |
||||||
|
puts "Deleting batch #{i + 1}" |
||||||
|
logs.delete_all |
||||||
|
end |
||||||
|
puts "Done deleting Sales Logs" |
||||||
|
|
||||||
|
puts "Deleting Lettings Logs in batches of 10000" |
||||||
|
logs = LettingsLog.filter_by_year_or_earlier(year) |
||||||
|
|
||||||
|
logs.in_batches(of: 10_000).each_with_index do |logs, i| |
||||||
|
puts "Deleting batch #{i + 1}" |
||||||
|
logs.delete_all |
||||||
|
end |
||||||
|
puts "Done deleting Lettings Logs" |
||||||
|
|
||||||
|
puts "Done deleting Logs before #{year}" |
||||||
|
end |
||||||
Loading…
Reference in new issue