docbrown/app/models/email_message.rb
Anna Buianova 784afdf41e
Routine rubocop fixes (#19254)
* Rubocop fixes

* Rubocop fixes

* Fixed rubocop violation

* Fixed policies rubocop violations

* More rubocop fixes
2023-03-24 14:37:44 +03:00

37 lines
1.2 KiB
Ruby

class EmailMessage < Ahoy::Message
belongs_to :feedback_message, optional: true
def self.find_for_reports(feedback_message_ids)
select(:to, :subject, :content, :utm_campaign, :feedback_message_id)
.where(feedback_message_id: feedback_message_ids)
end
def self.fast_destroy_old_retained_email_deliveries(destroy_before_timestamp = 3.months.ago)
# We remove email delivery records periodically, except some we retain long term.
# We generally want to retain emails directly sent by human admins.
# The only email currently sent manually are those that are tied directly to a feedback message.
sql = <<~SQL
DELETE FROM ahoy_messages
WHERE ahoy_messages.id IN (
SELECT ahoy_messages.id
FROM ahoy_messages
WHERE sent_at < ? AND feedback_message_id IS NULL
LIMIT 50000
)
SQL
email_sql = EmailMessage.sanitize_sql([sql, destroy_before_timestamp])
BulkSqlDelete.delete_in_batches(email_sql)
end
def html_content
return "" if content.nil?
html_index = content.index("<html")
return content if html_index.nil?
closing_html_index = content.index("</html>") + 7
content[html_index..closing_html_index]
end
end