diff --git a/src/sentry/models/pullrequest.py b/src/sentry/models/pullrequest.py index e07f464e1d0615..f7a40173a1bb94 100644 --- a/src/sentry/models/pullrequest.py +++ b/src/sentry/models/pullrequest.py @@ -121,12 +121,16 @@ def get_unused_filter(cls, cutoff_date: datetime) -> Q: This is the inverse of what makes a PR "in use". """ from sentry.models.grouplink import GroupLink + from sentry.models.releasecommit import ReleaseCommit + from sentry.models.releaseheadcommit import ReleaseHeadCommit # Subquery for checking if there's a valid GroupLink - grouplink_exists = GroupLink.objects.filter( - linked_type=GroupLink.LinkedType.pull_request, - linked_id=OuterRef("id"), - group__project__isnull=False, + grouplink_exists = Exists( + GroupLink.objects.filter( + linked_type=GroupLink.LinkedType.pull_request, + linked_id=OuterRef("id"), + group__project__isnull=False, + ) ) # Subquery for checking if comment has valid group_ids @@ -147,15 +151,26 @@ def get_unused_filter(cls, cutoff_date: datetime) -> Q: ) ) + recent_comment_exists = Exists( + PullRequestComment.objects.filter( + pull_request_id=OuterRef("id"), + ).filter(Q(created_at__gte=cutoff_date) | Q(updated_at__gte=cutoff_date)) + ) + + commit_in_release = Exists(ReleaseCommit.objects.filter(commit_id=OuterRef("commit_id"))) + commit_in_head = Exists(ReleaseHeadCommit.objects.filter(commit_id=OuterRef("commit_id"))) + commit_exists = Exists( + PullRequestCommit.objects.filter( + pull_request_id=OuterRef("id"), + ).filter(Q(commit__date_added__gte=cutoff_date) | commit_in_release | commit_in_head) + ) + # Define what makes a PR "in use" (should be kept) keep_conditions = ( Q(date_added__gte=cutoff_date) - | Q(pullrequestcomment__created_at__gte=cutoff_date) - | Q(pullrequestcomment__updated_at__gte=cutoff_date) - | Q(pullrequestcommit__commit__date_added__gte=cutoff_date) - | Q(pullrequestcommit__commit__releasecommit__isnull=False) - | Q(pullrequestcommit__commit__releaseheadcommit__isnull=False) - | Exists(grouplink_exists) + | recent_comment_exists + | commit_exists + | grouplink_exists | comment_has_valid_group )