otwarchive-symphonyarchive/lib/tasks/work_tasks.rake

56 lines
1.5 KiB
Ruby
Raw Normal View History

2026-03-11 22:22:11 +00:00
namespace :work do
desc "Purge drafts created more than a month ago"
task(:purge_old_drafts => :environment) do
count = 0
Work.unposted.where('works.created_at < ?', 1.month.ago).find_each do |work|
begin
work.destroy!
count += 1
rescue StandardError => e
puts "The following error occurred while trying to destroy draft #{work.id}:"
puts "#{e.class}: #{e.message}"
puts e.backtrace
end
end
puts "Unposted works (#{count}) created more than one month ago have been purged"
end
desc "create missing hit counters"
task(:missing_stat_counters => :environment) do
Work.find_each do |work|
counter = work.stat_counter
unless counter
counter = StatCounter.create(:work => work, :hit_count => 1)
end
end
end
# Usage: rake work:reset_word_counts[en]
desc "Reset word counts for works in the specified language"
task(:reset_word_counts, [:lang] => :environment) do |_t, args|
language = Language.find_by(short: args.lang)
updated_works = "ALL"
if language.nil?
works = Work.all
else
works = Work.where(language: language)
updated_works = language.short
end
print "Resetting word count for #{works.count} '#{updated_works}' works: "
works.find_in_batches do |batch|
batch.each do |work|
work.chapters.each do |chapter|
chapter.content_will_change!
chapter.save
end
work.save
end
print(".") && STDOUT.flush
end
puts && STDOUT.flush
end
end