Skip to content

Commit 61ddad8

Browse files
committed
Added the pr_filter to query params and made response to non_paginated_pr_response
1 parent 28f9892 commit 61ddad8

File tree

4 files changed

+35
-11
lines changed

4 files changed

+35
-11
lines changed

backend/analytics_server/mhq/api/pull_requests.py

+11-4
Original file line numberDiff line numberDiff line change
@@ -175,14 +175,21 @@ def get_team_lead_time_trends(
175175
{
176176
Required("from_time"): All(str, Coerce(datetime.fromisoformat)),
177177
Required("to_time"): All(str, Coerce(datetime.fromisoformat)),
178+
Optional("pr_filter"): All(str, Coerce(json.loads)),
178179
}
179180
),
180181
)
181-
def merged_without_review(team_id: str, from_time: datetime, to_time: datetime):
182+
def merged_without_review(
183+
team_id: str, from_time: datetime, to_time: datetime, pr_filter: Dict = None
184+
):
182185
query_validator = get_query_validator()
183186
team: Team = query_validator.team_validator(team_id)
184187
interval: Interval = query_validator.interval_validator(from_time, to_time)
188+
pr_filter: PRFilter = apply_pr_filter(
189+
pr_filter, EntityType.TEAM, team_id, [SettingType.EXCLUDED_PRS_SETTING]
190+
)
185191
pr_analytics = get_pr_analytics_service()
186-
result = pr_analytics.get_prs_merged_without_review(team.id, interval)
187-
prs_map = [pr.id for pr in result]
188-
return {"PrsWithoutReviewMerged": prs_map}
192+
repos = pr_analytics.get_team_repos(team_id)
193+
prs = pr_analytics.get_prs_merged_without_review(team.id, interval, pr_filter)
194+
repo_id_repo_map = {repo.id: repo for repo in repos}
195+
return get_non_paginated_pr_response(prs, repo_id_repo_map, len(prs))

backend/analytics_server/mhq/api/resources/code_resouces.py

+5
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,8 @@ def adapt_team_repos(team_repos: List[TeamRepos]) -> List[Dict[str, any]]:
172172
}
173173
for team_repo in team_repos
174174
]
175+
176+
def get_non_paginated_merged_without_review(prs: List[PullRequest]) -> List[Dict[str,any]]:
177+
return {
178+
"data": []
179+
}

backend/analytics_server/mhq/service/code/pr_analytics.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ def get_prs_by_ids(self, pr_ids: List[str]) -> List[PullRequest]:
1414
return self.code_repo_service.get_prs_by_ids(pr_ids)
1515

1616
def get_prs_merged_without_review(
17-
self, team_id: str, interval: Interval
17+
self, team_id: str, interval: Interval, pr_filter: dict
1818
) -> List[PullRequest]:
19-
return self.code_repo_service.get_prs_merged_without_review(team_id, interval)
19+
return self.code_repo_service.get_prs_merged_without_review(
20+
team_id, interval, pr_filter
21+
)
2022

2123
def get_team_repos(self, team_id: str) -> List[OrgRepo]:
2224
return self.code_repo_service.get_team_repos(team_id)

backend/analytics_server/mhq/store/repos/code.py

+15-5
Original file line numberDiff line numberDiff line change
@@ -368,20 +368,30 @@ def get_team_repos(self, team_id) -> List[OrgRepo]:
368368
return self.get_repos_by_ids(team_repo_ids)
369369

370370
@rollback_on_exc
371-
def get_prs_merged_without_review(self, team_id, interval) -> List[PullRequest]:
371+
def get_prs_merged_without_review(
372+
self, team_id: str, interval: Interval, pr_filter: PRFilter = None
373+
) -> List[PullRequest]:
372374
AllOrg = self.get_team_repos(team_id)
373375
AllOrg_ids = [tr.id for tr in AllOrg]
374-
return (
376+
query = (
375377
self._db.session.query(PullRequest)
376378
.filter(PullRequest.repo_id.in_(AllOrg_ids))
379+
.filter(PullRequest.state == PullRequestState.MERGED)
377380
.filter(PullRequest.merge_time == None)
378381
.filter(
379-
PullRequest.created_in_db_at.between(
380-
interval.from_time, interval.to_time
382+
or_(
383+
PullRequest.created_at.between(
384+
interval.from_time, interval.to_time
385+
),
386+
PullRequest.updated_at.between(
387+
interval.from_time, interval.to_time
388+
),
381389
)
382390
)
383-
.all()
384391
)
392+
query = self._filter_prs(query, pr_filter)
393+
394+
return query.all()
385395

386396
@rollback_on_exc
387397
def get_team_repos_by_team_id(self, team_id: str) -> List[TeamRepos]:

0 commit comments

Comments
 (0)