Skip to content
This repository was archived by the owner on Jul 14, 2025. It is now read-only.

Commit 283670b

Browse files
committed
performance refactor for group to users
1 parent be60347 commit 283670b

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

lib/discourse_data_explorer/report_generator.rb

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,26 @@ def self.filter_recipients_by_query_access(recipients, query, users_from_group:
127127

128128
query_group_ids = [Group::AUTO_GROUPS[:admins]].concat(query.groups.pluck(:group_id)).uniq
129129

130-
groups.each do |group|
131-
if users_from_group
132-
users = (users + group.users).uniq
133-
elsif query_group_ids.include?(group.id)
134-
result << [group.name, "group_name"]
130+
if users_from_group
131+
result.concat(
132+
User
133+
.joins(:group_users)
134+
.where(group_users: { group_id: groups.ids })
135+
.where(
136+
"users.admin OR EXISTS (
137+
SELECT 1 FROM group_users gu
138+
WHERE gu.user_id = users.id
139+
AND gu.group_id IN (?)
140+
)",
141+
query_group_ids,
142+
)
143+
.distinct
144+
.pluck(:username)
145+
.map { |username| [username, "username"] },
146+
)
147+
else
148+
groups.each do |group|
149+
result << [group.name, "group_name"] if query_group_ids.include?(group.id)
135150
end
136151
end
137152

spec/report_generator_spec.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,11 +182,9 @@
182182
describe "when true" do
183183
let(:opts) { { users_from_group: true } }
184184

185-
it "works with no query groups" do
185+
it "does not work when no query groups are set" do
186186
result = described_class.generate(query.id, query_params, [group.name], opts)
187-
188-
expect(result.length).to eq(1)
189-
expect(result[0]["target_usernames"]).to eq([user.username])
187+
expect(result).to eq []
190188
end
191189

192190
it "works when user is a member of automation group and query group" do

0 commit comments

Comments
 (0)