-
Notifications
You must be signed in to change notification settings - Fork 4k
/
email_message.rb
37 lines (30 loc) 路 1.2 KB
/
email_message.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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