Skip to content

Commit 1f9ea0e

Browse files
Merge pull request #536 from middlewarehq/fix/fetch-repos-based-on-providers
fetch active repos based on code providers
2 parents e3245b5 + a7b4d14 commit 1f9ea0e

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

backend/analytics_server/mhq/service/code/sync/etl_handler.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import pytz
55

6+
from mhq.store.models.code.enums import CodeProvider
67
from mhq.service.settings.configuration_settings import (
78
get_settings_service,
89
SettingsService,
@@ -42,11 +43,11 @@ def __init__(
4243
self.bookmark_service = bookmark_service
4344
self.settings_service = settings_service
4445

45-
def sync_org_repos(self, org_id: str):
46+
def sync_org_repos(self, org_id: str, provider: CodeProvider):
4647
if not self.etl_service.check_pat_validity():
4748
LOG.error("Invalid PAT for code provider")
4849
return
49-
org_repos: List[OrgRepo] = self._sync_org_repos(org_id)
50+
org_repos: List[OrgRepo] = self._sync_org_repos(org_id, provider)
5051
for org_repo in org_repos:
5152
try:
5253
self._sync_repo_pull_requests_data(org_repo)
@@ -56,9 +57,11 @@ def sync_org_repos(self, org_id: str):
5657
)
5758
continue
5859

59-
def _sync_org_repos(self, org_id: str) -> List[OrgRepo]:
60+
def _sync_org_repos(self, org_id: str, provider: CodeProvider) -> List[OrgRepo]:
6061
try:
61-
org_repos = self.code_repo_service.get_active_org_repos(org_id)
62+
org_repos = self.code_repo_service.get_active_org_repos_for_provider(
63+
org_id, provider
64+
)
6265
org_repos = self.etl_service.get_org_repos(org_repos)
6366
self.code_repo_service.update_org_repos(org_repos)
6467
return org_repos
@@ -141,7 +144,7 @@ def sync_code_repos(org_id: str):
141144
get_bookmark_service(),
142145
get_settings_service(),
143146
)
144-
code_etl_handler.sync_org_repos(org_id)
147+
code_etl_handler.sync_org_repos(org_id, CodeProvider(provider))
145148
LOG.info(f"Synced org repos for provider {provider}")
146149
except Exception as e:
147150
LOG.error(f"Error syncing org repos for provider {provider}: {str(e)}")

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from operator import and_
33
from typing import Optional, List
44

5+
from mhq.store.models.code.enums import CodeProvider
56
from sqlalchemy import or_
67
from sqlalchemy.orm import defer
78
from mhq.store.models.core import Team
@@ -35,6 +36,20 @@ def get_active_org_repos(self, org_id: str) -> List[OrgRepo]:
3536
.all()
3637
)
3738

39+
@rollback_on_exc
40+
def get_active_org_repos_for_provider(
41+
self, org_id: str, provider: CodeProvider
42+
) -> List[OrgRepo]:
43+
return (
44+
self._db.session.query(OrgRepo)
45+
.filter(
46+
OrgRepo.org_id == org_id,
47+
OrgRepo.is_active.is_(True),
48+
OrgRepo.provider == provider.value,
49+
)
50+
.all()
51+
)
52+
3853
@rollback_on_exc
3954
def update_org_repos(self, org_repos: List[OrgRepo]):
4055
[self._db.session.merge(org_repo) for org_repo in org_repos]

web-server/src/contexts/ThirdPartyAuthContext.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,14 @@ export const AuthProvider: FC = (props) => {
110110
const integrationSet = useMemo(
111111
() =>
112112
new Set<IntegrationGroup>(
113-
[].concat(integrations.github && IntegrationGroup.CODE).filter(Boolean)
113+
[]
114+
.concat(
115+
(integrations.github || integrations.gitlab) &&
116+
IntegrationGroup.CODE
117+
)
118+
.filter(Boolean)
114119
),
115-
[integrations.github]
120+
[integrations.github, integrations.gitlab]
116121
);
117122

118123
const integrationList = useMemo(

0 commit comments

Comments
 (0)