discourse/app/jobs/onceoff/clean_up_user_export_topics.rb
Krzysztof Kotlarek 427d54b2b0 DEV: Upgrading Discourse to Zeitwerk (#8098)
Zeitwerk simplifies working with dependencies in dev and makes it easier reloading class chains. 

We no longer need to use Rails "require_dependency" anywhere and instead can just use standard 
Ruby patterns to require files.

This is a far reaching change and we expect some followups here.
2019-10-02 14:01:53 +10:00

35 lines
1023 B
Ruby

# frozen_string_literal: true
module Jobs
class CleanUpUserExportTopics < ::Jobs::Onceoff
def execute_onceoff(args)
translated_keys = I18n.available_locales.map do |l|
I18n.with_locale(:"#{l}") { I18n.t("system_messages.csv_export_succeeded.subject_template") }
end.uniq
slugs = []
translated_keys.each do |k|
slugs << "%-#{Slug.for(k.gsub('[%{export_title}]', ''))}"
end
# "[%{export_title}] 資料匯出已完成" gets converted to "%-topic", do not match that slug.
slugs = slugs.reject { |s| s == "%-topic" }
topics = Topic.with_deleted.where(<<~SQL, slugs, UserExport::DESTROY_CREATED_BEFORE)
slug LIKE ANY(ARRAY[?]) AND
archetype = 'private_message' AND
subtype = 'system_message' AND
posts_count = 1 AND
created_at < ? AND
user_id = -1
SQL
topics.each do |t|
Topic.transaction do
t.posts.first.destroy!
t.destroy!
end
end
end
end
end