Skip to content

Commit 60165f9

Browse files
committed
Cleaned the function at service layer
1 parent c2ca521 commit 60165f9

File tree

3 files changed

+28
-22
lines changed

3 files changed

+28
-22
lines changed

backend/analytics_server/mhq/api/pull_requests.py

+18-5
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,25 @@ def get_team_lead_time_trends(
168168
for week, average_lead_time_metrics in weekly_lead_time_metrics_avg_map.items()
169169
}
170170

171-
@app.route("/teams/<team_id>/prs/merged_not_reviwed", methods={"GET"})
172-
def merge_not_reviwed(team_id : str):
171+
@app.route("/teams/<team_id>/prs/merged_without_review", methods={"GET"})
172+
@queryschema(
173+
Schema(
174+
{
175+
Required("from_time"): All(str, Coerce(datetime.fromisoformat)),
176+
Required("to_time"): All(str, Coerce(datetime.fromisoformat)),
177+
}
178+
),
179+
)
180+
def merged_without_review(
181+
team_id : str,
182+
from_time: datetime,
183+
to_time: datetime
184+
):
173185
query_validator = get_query_validator()
174186
team: Team = query_validator.team_validator(team_id)
187+
interval: Interval = query_validator.interval_validator(from_time, to_time)
175188
pr_analytics = get_pr_analytics_service()
176-
result = pr_analytics.get_prs_not_reviewed_merged(team.id)
177-
return result
178-
# return {'message':'hellothere'}
189+
result = pr_analytics.get_prs_merged_without_review(team.id,interval)
190+
prs_map = [pr.id for pr in result]
191+
return {'PrsWithoutReviewMerged': prs_map}
179192

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
from mhq.store.models.code import OrgRepo, PullRequest
22
from mhq.store.repos.code import CodeRepoService
33

4-
from typing import List, Optional
4+
5+
from typing import List,Optional
6+
from mhq.utils.time import Interval
57

68

79
class PullRequestAnalyticsService:
@@ -11,8 +13,8 @@ def __init__(self, code_repo_service: CodeRepoService):
1113
def get_prs_by_ids(self, pr_ids: List[str]) -> List[PullRequest]:
1214
return self.code_repo_service.get_prs_by_ids(pr_ids)
1315

14-
def get_prs_not_reviewed_merged(self,team_id):
15-
return self.code_repo_service.get_prs_not_reviewed_merged(team_id)
16+
def get_prs_merged_without_review(self,team_id:str,interval:Interval) -> List[PullRequest]:
17+
return self.code_repo_service.get_prs_merged_without_review(team_id,interval)
1618

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

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

+5-14
Original file line numberDiff line numberDiff line change
@@ -348,23 +348,14 @@ def get_team_repos(self, team_id) -> List[OrgRepo]:
348348
return self.get_repos_by_ids(team_repo_ids)
349349

350350
@rollback_on_exc
351-
def get_prs_not_reviewed_merged(self,team_id):
351+
def get_prs_merged_without_review(self,team_id,interval) -> List[PullRequest]:
352352
AllOrg = self.get_team_repos(team_id)
353353
AllOrg_ids = [tr.id for tr in AllOrg]
354-
print(AllOrg)
355-
AllPullRequestEventReviweinOrgIds = (self._db.session.query(PullRequestEvent)
356-
.filter(PullRequestEvent.org_repo_id.in_(AllOrg_ids))
357-
.all()
358-
)
359-
ListofReviwedPrs = [ tr.pull_request_id for tr in AllPullRequestEventReviweinOrgIds]
360-
AllPullRequestMergedNotReviwed = (self._db.session.query(PullRequest)
361-
.filter(PullRequest.id.not_in(ListofReviwedPrs))
362-
.filter(PullRequest.state == PullRequestState.MERGED)
354+
return (self._db.session.query(PullRequest)
355+
.filter(PullRequest.repo_id.in_(AllOrg_ids))
356+
.filter(PullRequest.merge_time == None)
357+
.filter(PullRequest.created_in_db_at.between(interval.from_time,interval.to_time))
363358
.all())
364-
print(AllPullRequestMergedNotReviwed)
365-
366-
return {"countofMergedReviewedPrs": len(AllPullRequestEventReviweinOrgIds),"countOfMergedNOtReviwedPrs":len(AllPullRequestMergedNotReviwed)}
367-
368359

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

0 commit comments

Comments
 (0)