DEV: Fix n+1 from event finder query

This commit is contained in:
Nat 2023-09-29 14:22:36 +08:00
parent b6ea7363d0
commit f0061a676d
No known key found for this signature in database
GPG Key ID: C095C891379A319E
2 changed files with 19 additions and 1 deletions

View File

@ -10,7 +10,8 @@ module DiscoursePostEvent
events =
DiscoursePostEvent::Event
.select("discourse_post_event_events.*, dcped.starts_at")
.joins(post: :topic)
.joins(post: [:user, { topic: {} }])
.includes(post: { user: {}, topic: {} })
.merge(Post.secured(guardian))
.merge(topics.or(pms).distinct)
.joins(

View File

@ -325,5 +325,22 @@ module DiscoursePostEvent
end
end
end
context "for upcoming events" do
it "returns all events for all categories" do
category1 = Fabricate(:category)
category2 = Fabricate(:category)
topic1 = Fabricate(:topic, category: category1)
topic2 = Fabricate(:topic, category: category2)
event_1 = Fabricate(:event, post: Fabricate(:post, post_number: 1, topic: topic1))
event_2 = Fabricate(:event, post: Fabricate(:post, post_number: 1, topic: topic2))
get "/discourse-post-event/events.json"
expect(response.status).to eq(200)
events = response.parsed_body["events"]
expect(events.map { |e| e["id"] }).to match_array([event_1.id, event_2.id])
end
end
end
end