Coverage for chalicelib/core/issue_tracking/integrations_global.py: 100%

11 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 12:56 +0000

1import schemas 

2from chalicelib.core.modules import TENANT_CONDITION 

3from chalicelib.utils import pg_client 

4 

5 

6def get_global_integrations_status(tenant_id, user_id, project_id): 

7 with pg_client.PostgresClient() as cur: 

8 cur.execute( 

9 cur.mogrify(f"""\ 

10 SELECT EXISTS((SELECT 1 

11 FROM public.oauth_authentication 

12 WHERE user_id = %(user_id)s 

13 AND provider = 'github')) AS {schemas.IntegrationType.GITHUB.value}, 

14 EXISTS((SELECT 1 

15 FROM public.jira_cloud 

16 WHERE user_id = %(user_id)s)) AS {schemas.IntegrationType.JIRA.value}, 

17 EXISTS((SELECT 1 

18 FROM public.integrations 

19 WHERE project_id=%(project_id)s  

20 AND provider='bugsnag')) AS {schemas.IntegrationType.BUGSNAG.value}, 

21 EXISTS((SELECT 1 

22 FROM public.integrations 

23 WHERE project_id=%(project_id)s  

24 AND provider='cloudwatch')) AS {schemas.IntegrationType.CLOUDWATCH.value}, 

25 EXISTS((SELECT 1 

26 FROM public.integrations 

27 WHERE project_id=%(project_id)s  

28 AND provider='datadog')) AS {schemas.IntegrationType.DATADOG.value}, 

29 EXISTS((SELECT 1 

30 FROM public.integrations 

31 WHERE project_id=%(project_id)s  

32 AND provider='newrelic')) AS {schemas.IntegrationType.NEWRELIC.value}, 

33 EXISTS((SELECT 1 

34 FROM public.integrations 

35 WHERE project_id=%(project_id)s  

36 AND provider='rollbar')) AS {schemas.IntegrationType.ROLLBAR.value}, 

37 EXISTS((SELECT 1 

38 FROM public.integrations 

39 WHERE project_id=%(project_id)s  

40 AND provider='sentry')) AS {schemas.IntegrationType.SENTRY.value}, 

41 EXISTS((SELECT 1 

42 FROM public.integrations 

43 WHERE project_id=%(project_id)s  

44 AND provider='stackdriver')) AS {schemas.IntegrationType.STACKDRIVER.value}, 

45 EXISTS((SELECT 1 

46 FROM public.integrations 

47 WHERE project_id=%(project_id)s  

48 AND provider='sumologic')) AS {schemas.IntegrationType.SUMOLOGIC.value}, 

49 EXISTS((SELECT 1 

50 FROM public.integrations 

51 WHERE project_id=%(project_id)s  

52 AND provider='elasticsearch')) AS {schemas.IntegrationType.ELASTICSEARCH.value}, 

53 EXISTS((SELECT 1 

54 FROM public.webhooks 

55 WHERE type='slack' AND deleted_at ISNULL AND {TENANT_CONDITION})) AS {schemas.IntegrationType.SLACK.value}, 

56 EXISTS((SELECT 1 

57 FROM public.webhooks 

58 WHERE type='msteams' AND deleted_at ISNULL AND {TENANT_CONDITION})) AS {schemas.IntegrationType.MS_TEAMS.value}, 

59 EXISTS((SELECT 1 

60 FROM public.integrations 

61 WHERE project_id=%(project_id)s AND provider='dynatrace')) AS {schemas.IntegrationType.DYNATRACE.value};""", 

62 {"user_id": user_id, "tenant_id": tenant_id, "project_id": project_id}) 

63 ) 

64 current_integrations = cur.fetchone() 

65 result = [] 

66 for k in current_integrations.keys(): 

67 result.append({"name": k, "integrated": current_integrations[k]}) 

68 return result