mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-06-22 22:11:03 +02:00
88 lines
2.5 KiB
Python
88 lines
2.5 KiB
Python
"""delete workspace
|
|
|
|
Revision ID: c0aab6edb6dd
|
|
Revises: 35e518e0ddf4
|
|
Create Date: 2024-12-17 14:37:07.660631
|
|
|
|
"""
|
|
|
|
from alembic import op
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = "c0aab6edb6dd"
|
|
down_revision = "35e518e0ddf4"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute(
|
|
"""
|
|
UPDATE connector
|
|
SET connector_specific_config = connector_specific_config - 'workspace'
|
|
WHERE source = 'SLACK'
|
|
"""
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
import json
|
|
from sqlalchemy import text
|
|
from slack_sdk import WebClient
|
|
|
|
conn = op.get_bind()
|
|
|
|
# Fetch all Slack credentials
|
|
creds_result = conn.execute(
|
|
text("SELECT id, credential_json FROM credential WHERE source = 'SLACK'")
|
|
)
|
|
all_slack_creds = creds_result.fetchall()
|
|
if not all_slack_creds:
|
|
return
|
|
|
|
for cred_row in all_slack_creds:
|
|
credential_id, credential_json = cred_row
|
|
|
|
credential_json = (
|
|
credential_json.tobytes().decode("utf-8")
|
|
if isinstance(credential_json, memoryview)
|
|
else credential_json.decode("utf-8")
|
|
)
|
|
credential_data = json.loads(credential_json)
|
|
slack_bot_token = credential_data.get("slack_bot_token")
|
|
if not slack_bot_token:
|
|
print(
|
|
f"No slack_bot_token found for credential {credential_id}. "
|
|
"Your Slack connector will not function until you upgrade and provide a valid token."
|
|
)
|
|
continue
|
|
|
|
client = WebClient(token=slack_bot_token)
|
|
try:
|
|
auth_response = client.auth_test()
|
|
workspace = auth_response["url"].split("//")[1].split(".")[0]
|
|
|
|
# Update only the connectors linked to this credential
|
|
# (and which are Slack connectors).
|
|
op.execute(
|
|
f"""
|
|
UPDATE connector AS c
|
|
SET connector_specific_config = jsonb_set(
|
|
connector_specific_config,
|
|
'{{workspace}}',
|
|
to_jsonb('{workspace}'::text)
|
|
)
|
|
FROM connector_credential_pair AS ccp
|
|
WHERE ccp.connector_id = c.id
|
|
AND c.source = 'SLACK'
|
|
AND ccp.credential_id = {credential_id}
|
|
"""
|
|
)
|
|
except Exception:
|
|
print(
|
|
f"We were unable to get the workspace url for your Slack Connector with id {credential_id}."
|
|
)
|
|
print("This connector will no longer work until you upgrade.")
|
|
continue
|