Skip to content

Commit adc2854

Browse files
committed
Use new permissions project join where possible
1 parent cb504a8 commit adc2854

File tree

4 files changed

+11
-15
lines changed

4 files changed

+11
-15
lines changed

share-api/src/Share/Postgres/Contributions/Queries.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,10 +260,10 @@ listContributionsByUserId callerUserId userId limit mayCursor mayStatusFilter ma
260260
contribution.author_id,
261261
(SELECT COUNT(*) FROM comments comment WHERE comment.contribution_id = contribution.id AND comment.deleted_at IS NULL) as num_comments
262262
FROM contributions AS contribution
263-
JOIN projects AS project ON project.id = contribution.project_id
263+
JOIN projects_by_user_permission(#{callerUserId}, #{ProjectView}) AS project
264+
ON project.id = contribution.project_id
264265
WHERE
265266
contribution.author_id = #{userId}
266-
AND user_has_project_permission(#{callerUserId}, project.id, #{ProjectView})
267267
AND (#{mayStatusFilter} IS NULL OR contribution.status = #{mayStatusFilter})
268268
AND ^{cursorFilter}
269269
AND ^{kindFilter}

share-api/src/Share/Postgres/Queries.hs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,10 +273,9 @@ listProjectsByUserWithMetadata callerUserId projectOwnerUserId = do
273273
owner.handle,
274274
owner.name,
275275
EXISTS (SELECT FROM org_members WHERE org_members.organization_user_id = owner.id) AS is_org
276-
FROM projects p
276+
FROM projects_by_user_permission(#{callerUserId}, #{ProjectView}) AS project ON project.id = b.project_id
277277
JOIN users owner ON owner.id = p.owner_user_id
278278
WHERE p.owner_user_id = #{projectOwnerUserId}
279-
AND user_has_project_permission(#{callerUserId}, p.id, #{ProjectView})
280279
ORDER BY p.created_at DESC
281280
|]
282281
where
@@ -876,12 +875,11 @@ listContributorBranchesOfUserAccessibleToCaller contributorUserId mayCallerUserI
876875
project_owner.name,
877876
EXISTS (SELECT FROM org_members WHERE org_members.organization_user_id = project.owner_user_id)
878877
FROM project_branches b
879-
JOIN projects project ON project.id = b.project_id
878+
JOIN projects_by_user_permission(#{mayCallerUserId}, #{ProjectView}) AS project ON project.id = b.project_id
880879
JOIN users AS project_owner ON project_owner.id = project.owner_user_id
881880
WHERE
882881
b.deleted_at IS NULL
883882
AND b.contributor_id = #{contributorUserId}
884-
AND user_has_project_permission(#{mayCallerUserId}, b.project_id, #{ProjectView})
885883
|],
886884
branchNameFilter,
887885
cursorFilter,

share-api/src/Share/Postgres/Search/DefinitionSearch/Queries.hs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -401,13 +401,13 @@ globalDefNameCompletionSearch mayCaller mayUserFilter (Query query) limit = do
401401
[sql|
402402
WITH results(name, tag) AS (
403403
SELECT DISTINCT doc.name, doc.tag FROM global_definition_search_docs doc
404-
JOIN projects p ON p.id = doc.project_id
404+
JOIN projects_by_user_permission(#{mayCaller}, #{ProjectView}) p
405+
ON p.id = doc.project_id
405406
WHERE
406407
-- Find names which contain the query
407408
doc.name ILIKE ('%.' || like_escape(#{query}) || '%')
408409

409-
AND user_has_project_permission(#{mayCaller}, p.id, #{ProjectView})
410-
^{filters}
410+
^{filters}
411411
) SELECT r.name, r.tag FROM results r
412412
-- Docs and tests to the bottom, then
413413
-- prefer matches where the original query appears (case-matched),
@@ -501,11 +501,11 @@ globalDefinitionTokenSearch mayCaller mayUserFilter limit searchTokens preferred
501501
queryListRows @(ProjectId, ReleaseId, Name, Hasql.Jsonb)
502502
[sql|
503503
SELECT doc.project_id, doc.release_id, doc.name, doc.metadata FROM global_definition_search_docs doc
504-
JOIN projects p ON p.id = doc.project_id
504+
JOIN projects_by_user_permission(#{mayCaller}, #{ProjectView}) p
505+
ON p.id = doc.project_id
505506
WHERE
506507
-- match on search tokens using GIN index.
507508
tsquery(#{tsQueryText}) @@ doc.search_tokens
508-
AND user_has_project_permission(#{mayCaller}, p.id, #{ProjectView})
509509
AND (#{preferredArity} IS NULL OR doc.arity >= #{preferredArity})
510510
^{filters}
511511
^{namesFilter}
@@ -619,11 +619,10 @@ globalDefinitionNameSearch mayCaller mayUserFilter limit (Query query) = do
619619
queryListRows @(ProjectId, ReleaseId, Name, Hasql.Jsonb)
620620
[sql|
621621
SELECT doc.project_id, doc.release_id, doc.name, doc.metadata FROM global_definition_search_docs doc
622-
JOIN projects p ON p.id = doc.project_id
622+
JOIN projects_by_user_permission(#{mayCaller}, #{ProjectView}) p ON p.id = doc.project_id
623623
WHERE
624624
-- We may wish to adjust the similarity threshold before the query.
625625
#{query} <% doc.name
626-
AND user_has_project_permission(#{mayCaller}, p.id, #{ProjectView})
627626
^{filters}
628627
-- Score matches by:
629628
-- - projects in the catalog

share-api/src/Share/Postgres/Tickets/Queries.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,10 +251,9 @@ listTicketsByUserId callerUserId userId limit mayCursor mayStatusFilter = do
251251
ticket.author_id,
252252
(SELECT COUNT(*) FROM comments comment WHERE comment.ticket_id = ticket.id AND comment.deleted_at IS NULL) as num_comments
253253
FROM tickets AS ticket
254-
JOIN projects AS project ON project.id = ticket.project_id
254+
JOIN projects_by_user_permission(#{callerUserId}, #{ProjectView}) AS project ON project.id = ticket.project_id
255255
WHERE
256256
ticket.author_id = #{userId}
257-
AND user_has_project_permission(#{callerUserId}, project.id, #{ProjectView})
258257
AND (#{mayStatusFilter} IS NULL OR ticket.status = #{mayStatusFilter}::ticket_status)
259258
AND ^{cursorFilter}
260259
ORDER BY ticket.updated_at DESC, ticket.id DESC

0 commit comments

Comments
 (0)