Files
danbooru/app/logical/bulk_update_request_pruner.rb
evazion a7dc05ce63 Enable frozen string literals.
Make all string literals immutable by default.
2021-12-14 21:33:27 -06:00

47 lines
1.6 KiB
Ruby

# frozen_string_literal: true
# Rejects bulk update requests that haven't been approved in 45 days.
module BulkUpdateRequestPruner
module_function
# How many days before a bulk update request should be automatically rejected.
EXPIRATION_PERIOD = 45.days
# How many days before we should warn about upcoming rejections.
WARNING_PERIOD = 5.days
# Posts a warning when a bulk update request is pending automatic rejection in 5 days.
def warn_old
upcoming_expired_requests.find_each do |bulk_update_request|
if bulk_update_request.forum_topic
body = "This bulk update request is pending automatic rejection in #{WARNING_PERIOD.inspect}."
unless bulk_update_request.forum_topic.forum_posts.where(creator_id: User.system.id, body: body).exists?
bulk_update_request.forum_updater.update(body)
end
end
end
end
# Rejects bulk update requests that haven't been approved in 45 days.
def reject_expired
expired_requests.find_each do |bulk_update_request|
ApplicationRecord.transaction do
if bulk_update_request.forum_topic
body = "This bulk update request has been rejected because it was not approved within #{EXPIRATION_PERIOD.inspect}."
bulk_update_request.forum_updater.update(body)
end
bulk_update_request.reject!(User.system)
end
end
end
def expired_requests
BulkUpdateRequest.pending.where("created_at < ?", EXPIRATION_PERIOD.ago)
end
def upcoming_expired_requests
BulkUpdateRequest.pending.where("created_at >= ? and created_at < ?", EXPIRATION_PERIOD.ago, (EXPIRATION_PERIOD - WARNING_PERIOD).ago)
end
end