Preload workshop_host in DashboardQuery.upcoming_events_for_user (per-workshop N+1 on /dashboard)
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 82/100
Rechercherichtung
Beginne in app/queries/dashboard_query.rb etwa bei den Zeilen 27-40, wo upcoming_events_for_user eager_load(:sponsors) verwendet, ohne den Workshop-Host zu laden. Prüfe, wie Workshop#host über workshop_host und sponsor läuft, und wie PR #3066 seinen preload hinzugefügt hat. Füge preload(workshop_host: :sponsor) neben dem bestehenden Join hinzu und lass :workshop_host wie im Issue beschrieben aus eager_load heraus. Fertig, wenn die Anzahl der Abfragen für /dashboard nicht mehr mit der Anzahl der Workshops wächst.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
DashboardQuery.upcoming_events_for_user runs one workshop_host lookup per workshop on every /dashboard render. Give it the same treatment as PR #3066: keep :sponsors in the join and add preload(workshop_host: :sponsor).
app/queries/dashboard_query.rb:27-40eager_loads:sponsorsbut never loads:workshop_hostWorkshop#hostlazy-loads throughworkshop_host&.sponsor, so each card costs up to two extra queries — up to2 × DashboardQuery::MAX_WORKSHOP_QUERYper render- The
dashboardaction renders the sameEventCardComponent→WorkshopPresenter#venue→model.hostpath that PR #3066 fixed for the homepage - Do not add
:workshop_hostto theeager_loadlist: sharing theworkshop_sponsorsjoin alias is the #2975 host-loss trap
Raised from the review of PR #3066; the gap predates that PR.
- Vorherrschende Sprache
- Ruby
- Sterne
- 106
- Forks
- 208
- Ø Merge
- 19 Std. 51 Min.
- Gemergte PRs (30 T.)
- 57
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus codebar/planner
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 Ein halber Tag Anfängerfreundlichkeit 35/100
codebar/planner#3069 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Dual Invitiation issueEvtl. vergeben @mroderick hat das vor 20 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 42/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 28/100
codebar/planner#3008 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in codebar/planner
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
swombat/souls-house#795 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
-
Missing hi translation: components/common/CommunitySolution.tsx:communitySolution.numTimesStarredOffen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 63/100
Maintainer antworten meist innerhalb von 1 Tag
-
Tracking: SQLite usage and the Windows GVL/SQLite deadlock (lich-5#2254): moonwatch.lic, low riskOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
elanthia-online/dr-scripts#7968 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
fullsend-ai/agents#1901 ·
Maintainer antworten meist innerhalb von 1 Tag