Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion backend/analytics_server/mhq/api/resources/code_resouces.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Dict, List
from mhq.service.code.models.lead_time import LeadTimeMetrics
from mhq.api.resources.core_resources import adapt_user_info
from mhq.store.models.code import PullRequest
from mhq.store.models.code import PullRequest, OrgRepo
from mhq.store.models.core import Users


Expand Down Expand Up @@ -105,3 +105,21 @@ def adapt_lead_time_metrics(lead_time_metric: LeadTimeMetrics) -> Dict[str, any]
"merge_to_deploy": lead_time_metric.merge_to_deploy,
"pr_count": lead_time_metric.pr_count,
}


def adapt_org_repo(org_repo: OrgRepo) -> Dict[str, any]:
return {
"id": str(org_repo.id),
"org_id": str(org_repo.org_id),
"name": org_repo.name,
"org_name": org_repo.org_name,
"provider": org_repo.provider,
"is_active": org_repo.is_active,
"default_branch": org_repo.default_branch,
"language": org_repo.language,
"contributors": org_repo.contributors,
"idempotency_key": org_repo.idempotency_key,
"slug": org_repo.slug,
"created_at": org_repo.created_at.isoformat(),
"updated_at": org_repo.updated_at.isoformat(),
}
13 changes: 13 additions & 0 deletions backend/analytics_server/mhq/api/teams.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from flask import Blueprint
from typing import List
from voluptuous import Required, Schema, Optional
from mhq.api.resources.code_resouces import adapt_org_repo
from mhq.service.code.repository_service import get_repository_service
from mhq.api.resources.core_resources import adapt_team
from mhq.store.models.core.teams import Team
from mhq.service.core.teams import get_team_service
Expand Down Expand Up @@ -77,3 +79,14 @@ def delete_team(team_id: str):
team = team_service.delete_team(team_id)

return adapt_team(team)


@app.route("/teams/<team_id>/repos", methods={"GET"})
def fetch_team_repos(team_id: str):

query_validator = get_query_validator()
team: Team = query_validator.team_validator(team_id)

team_repos = get_repository_service().get_team_repos(team)

return [adapt_org_repo(repo) for repo in team_repos]
16 changes: 16 additions & 0 deletions backend/analytics_server/mhq/service/code/repository_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from typing import List
from mhq.store.models.code import OrgRepo
from mhq.store.models.core import Team
from mhq.store.repos.code import CodeRepoService


class RepositoryService:
def __init__(self, code_repo_service: CodeRepoService):
self._code_repo_service = code_repo_service

def get_team_repos(self, team: Team) -> List[OrgRepo]:
return self._code_repo_service.get_team_repos(team_id=str(team.id))


def get_repository_service():
return RepositoryService(CodeRepoService())