Reuse authors when rendering event Atom feeds
Previously we'd use "event.author_email" which translates to "event.author.email". This would result in an extra query being executed _for every event_ just to get the same author's Email address. Instead of doing all this useless work we can just pass the User object returned by "event.author" since: 1. This allows us to re-use the user object's Email address. 2. Authors are eager-loaded, so this doesn't cause any N+1 queries.
This commit is contained in:
parent
52f5259ae4
commit
631801674f
2 changed files with 11 additions and 1 deletions
|
@ -5,7 +5,12 @@ xml.entry do
|
||||||
xml.link href: event_feed_url(event)
|
xml.link href: event_feed_url(event)
|
||||||
xml.title truncate(event_feed_title(event), length: 80)
|
xml.title truncate(event_feed_title(event), length: 80)
|
||||||
xml.updated event.updated_at.xmlschema
|
xml.updated event.updated_at.xmlschema
|
||||||
xml.media :thumbnail, width: "40", height: "40", url: image_url(avatar_icon(event.author_email))
|
|
||||||
|
# We're deliberately re-using "event.author" here since this data is
|
||||||
|
# eager-loaded. This allows us to re-use the user object's Email address,
|
||||||
|
# instead of having to run additional queries to figure out what Email to use
|
||||||
|
# for the avatar.
|
||||||
|
xml.media :thumbnail, width: "40", height: "40", url: image_url(avatar_icon(event.author))
|
||||||
|
|
||||||
xml.author do
|
xml.author do
|
||||||
xml.username event.author_username
|
xml.username event.author_username
|
||||||
|
|
5
changelogs/unreleased/events-atom-feed-author-query.yml
Normal file
5
changelogs/unreleased/events-atom-feed-author-query.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Reuse authors when rendering event Atom feeds
|
||||||
|
merge_request:
|
||||||
|
author:
|
||||||
|
type: performance
|
Loading…
Reference in a new issue