Skip to content

Commit 48bee57

Browse files
committed
Perf improvement by not creating AR objects
1 parent 2fed221 commit 48bee57

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

app/models/message.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,18 @@ def from_mail(mail, list, list_seq)
3232
message_id = mail.message_id&.encode Encoding::UTF_8, invalid: :replace, undef: :replace
3333

3434
# mail.in_reply_to returns strange Array object in some cases (?), so let's use the raw value
35-
parent_message_id = extract_message_id_from_in_reply_to(mail.header[:in_reply_to]&.value)
36-
parent_message = Message.find_by message_id_header: parent_message_id if parent_message_id
37-
if !parent_message && (String === mail.references)
38-
parent_message = Message.find_by message_id_header: mail.references
35+
parent_message_id_header = extract_message_id_from_in_reply_to(mail.header[:in_reply_to]&.value)
36+
parent_message_id = Message.where(message_id_header: parent_message_id_header).pick(:id) if parent_message_id_header
37+
if !parent_message_id && (String === mail.references)
38+
parent_message_id = Message.where(message_id_header: mail.references).pick(:id)
3939
end
40-
if !parent_message && (Array === mail.references)
40+
if !parent_message_id && (Array === mail.references)
4141
mail.references.compact.each do |ref|
42-
break if (parent_message = Message.find_by message_id_header: ref)
42+
break if (parent_message_id = Message.where(message_id_header: ref).pick(:id))
4343
end
4444
end
4545

46-
new list_id: list.id, list_seq: list_seq, body: body, subject: subject, from: from, published_at: mail.date, message_id_header: message_id, parent_id: parent_message&.id
46+
new list_id: list.id, list_seq: list_seq, body: body, subject: subject, from: from, published_at: mail.date, message_id_header: message_id, parent_id: parent_message_id
4747
end
4848

4949
private def extract_message_id_from_in_reply_to(header)

0 commit comments

Comments
 (0)