64 lines
3.9 KiB
Python
64 lines
3.9 KiB
Python
import schemas
|
|
from chalicelib.utils import pg_client
|
|
|
|
|
|
def get_global_integrations_status(tenant_id, user_id, project_id):
|
|
with pg_client.PostgresClient() as cur:
|
|
cur.execute(
|
|
cur.mogrify(f"""\
|
|
SELECT EXISTS((SELECT 1
|
|
FROM public.oauth_authentication
|
|
WHERE user_id = %(user_id)s
|
|
AND provider = 'github')) AS {schemas.IntegrationType.github.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.jira_cloud
|
|
WHERE user_id = %(user_id)s)) AS {schemas.IntegrationType.jira.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='bugsnag')) AS {schemas.IntegrationType.bugsnag.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='cloudwatch')) AS {schemas.IntegrationType.cloudwatch.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='datadog')) AS {schemas.IntegrationType.datadog.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='newrelic')) AS {schemas.IntegrationType.newrelic.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='rollbar')) AS {schemas.IntegrationType.rollbar.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='sentry')) AS {schemas.IntegrationType.sentry.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='stackdriver')) AS {schemas.IntegrationType.stackdriver.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='sumologic')) AS {schemas.IntegrationType.sumologic.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.integrations
|
|
WHERE project_id=%(project_id)s
|
|
AND provider='elasticsearch')) AS {schemas.IntegrationType.elasticsearch.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.webhooks
|
|
WHERE type='slack' AND deleted_at ISNULL)) AS {schemas.IntegrationType.slack.value},
|
|
EXISTS((SELECT 1
|
|
FROM public.webhooks
|
|
WHERE type='msteams' AND deleted_at ISNULL)) AS {schemas.IntegrationType.ms_teams.value};""",
|
|
{"user_id": user_id, "tenant_id": tenant_id, "project_id": project_id})
|
|
)
|
|
current_integrations = cur.fetchone()
|
|
result = []
|
|
for k in current_integrations.keys():
|
|
result.append({"name": k, "integrated": current_integrations[k]})
|
|
return result
|