mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-06-01 18:49:27 +02:00
190 lines
5.3 KiB
Python
190 lines
5.3 KiB
Python
"""Permission Framework
|
|
|
|
Revision ID: 27c6ecc08586
|
|
Revises: 2666d766cb9b
|
|
Create Date: 2023-05-24 18:45:17.244495
|
|
|
|
"""
|
|
import fastapi_users_db_sqlalchemy
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
from sqlalchemy.dialects import postgresql
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = "27c6ecc08586"
|
|
down_revision = "2666d766cb9b"
|
|
branch_labels: None = None
|
|
depends_on: None = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute("TRUNCATE TABLE index_attempt")
|
|
op.create_table(
|
|
"connector",
|
|
sa.Column("id", sa.Integer(), nullable=False),
|
|
sa.Column("name", sa.String(), nullable=False),
|
|
sa.Column(
|
|
"source",
|
|
sa.Enum(
|
|
"SLACK",
|
|
"WEB",
|
|
"GOOGLE_DRIVE",
|
|
"GITHUB",
|
|
"CONFLUENCE",
|
|
name="documentsource",
|
|
native_enum=False,
|
|
),
|
|
nullable=False,
|
|
),
|
|
sa.Column(
|
|
"input_type",
|
|
sa.Enum(
|
|
"LOAD_STATE",
|
|
"POLL",
|
|
"EVENT",
|
|
name="inputtype",
|
|
native_enum=False,
|
|
),
|
|
nullable=True,
|
|
),
|
|
sa.Column(
|
|
"connector_specific_config",
|
|
postgresql.JSONB(astext_type=sa.Text()),
|
|
nullable=False,
|
|
),
|
|
sa.Column("refresh_freq", sa.Integer(), nullable=True),
|
|
sa.Column(
|
|
"time_created",
|
|
sa.DateTime(timezone=True),
|
|
server_default=sa.text("now()"),
|
|
nullable=False,
|
|
),
|
|
sa.Column(
|
|
"time_updated",
|
|
sa.DateTime(timezone=True),
|
|
server_default=sa.text("now()"),
|
|
nullable=False,
|
|
),
|
|
sa.Column("disabled", sa.Boolean(), nullable=False),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"credential",
|
|
sa.Column("id", sa.Integer(), nullable=False),
|
|
sa.Column(
|
|
"credential_json",
|
|
postgresql.JSONB(astext_type=sa.Text()),
|
|
nullable=False,
|
|
),
|
|
sa.Column(
|
|
"user_id",
|
|
fastapi_users_db_sqlalchemy.generics.GUID(),
|
|
nullable=True,
|
|
),
|
|
sa.Column("public_doc", sa.Boolean(), nullable=False),
|
|
sa.Column(
|
|
"time_created",
|
|
sa.DateTime(timezone=True),
|
|
server_default=sa.text("now()"),
|
|
nullable=False,
|
|
),
|
|
sa.Column(
|
|
"time_updated",
|
|
sa.DateTime(timezone=True),
|
|
server_default=sa.text("now()"),
|
|
nullable=False,
|
|
),
|
|
sa.ForeignKeyConstraint(
|
|
["user_id"],
|
|
["user.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"connector_credential_pair",
|
|
sa.Column("connector_id", sa.Integer(), nullable=False),
|
|
sa.Column("credential_id", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["connector_id"],
|
|
["connector.id"],
|
|
),
|
|
sa.ForeignKeyConstraint(
|
|
["credential_id"],
|
|
["credential.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("connector_id", "credential_id"),
|
|
)
|
|
op.add_column(
|
|
"index_attempt",
|
|
sa.Column("connector_id", sa.Integer(), nullable=True),
|
|
)
|
|
op.add_column(
|
|
"index_attempt",
|
|
sa.Column("credential_id", sa.Integer(), nullable=True),
|
|
)
|
|
op.create_foreign_key(
|
|
"fk_index_attempt_credential_id",
|
|
"index_attempt",
|
|
"credential",
|
|
["credential_id"],
|
|
["id"],
|
|
)
|
|
op.create_foreign_key(
|
|
"fk_index_attempt_connector_id",
|
|
"index_attempt",
|
|
"connector",
|
|
["connector_id"],
|
|
["id"],
|
|
)
|
|
op.drop_column("index_attempt", "connector_specific_config")
|
|
op.drop_column("index_attempt", "source")
|
|
op.drop_column("index_attempt", "input_type")
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.execute("TRUNCATE TABLE index_attempt")
|
|
op.add_column(
|
|
"index_attempt",
|
|
sa.Column("input_type", sa.VARCHAR(), autoincrement=False, nullable=False),
|
|
)
|
|
op.add_column(
|
|
"index_attempt",
|
|
sa.Column("source", sa.VARCHAR(), autoincrement=False, nullable=False),
|
|
)
|
|
op.add_column(
|
|
"index_attempt",
|
|
sa.Column(
|
|
"connector_specific_config",
|
|
postgresql.JSONB(astext_type=sa.Text()),
|
|
autoincrement=False,
|
|
nullable=False,
|
|
),
|
|
)
|
|
|
|
# Check if the constraint exists before dropping
|
|
conn = op.get_bind()
|
|
inspector = sa.inspect(conn)
|
|
constraints = inspector.get_foreign_keys("index_attempt")
|
|
|
|
if any(
|
|
constraint["name"] == "fk_index_attempt_credential_id"
|
|
for constraint in constraints
|
|
):
|
|
op.drop_constraint(
|
|
"fk_index_attempt_credential_id", "index_attempt", type_="foreignkey"
|
|
)
|
|
|
|
if any(
|
|
constraint["name"] == "fk_index_attempt_connector_id"
|
|
for constraint in constraints
|
|
):
|
|
op.drop_constraint(
|
|
"fk_index_attempt_connector_id", "index_attempt", type_="foreignkey"
|
|
)
|
|
|
|
op.drop_column("index_attempt", "credential_id")
|
|
op.drop_column("index_attempt", "connector_id")
|
|
op.drop_table("connector_credential_pair")
|
|
op.drop_table("credential")
|
|
op.drop_table("connector")
|