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
« 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
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