mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-09-28 04:49:21 +02:00
Allow Duplicate Naming for CC-Pair (#862)
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
"""CC-Pair Name not Unique
|
||||||
|
|
||||||
|
Revision ID: 76b60d407dfb
|
||||||
|
Revises: b156fa702355
|
||||||
|
Create Date: 2023-12-22 21:42:10.018804
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = "76b60d407dfb"
|
||||||
|
down_revision = "b156fa702355"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
op.execute("DELETE FROM connector_credential_pair WHERE name IS NULL")
|
||||||
|
op.drop_constraint(
|
||||||
|
"connector_credential_pair__name__key",
|
||||||
|
"connector_credential_pair",
|
||||||
|
type_="unique",
|
||||||
|
)
|
||||||
|
op.alter_column(
|
||||||
|
"connector_credential_pair", "name", existing_type=sa.String(), nullable=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
# This wasn't really required by the code either, no good reason to make it unique again
|
||||||
|
pass
|
@@ -36,8 +36,12 @@ def fetch_connectors(
|
|||||||
return list(results.all())
|
return list(results.all())
|
||||||
|
|
||||||
|
|
||||||
def connector_by_name_exists(connector_name: str, db_session: Session) -> bool:
|
def connector_by_name_source_exists(
|
||||||
stmt = select(Connector).where(Connector.name == connector_name)
|
connector_name: str, source: DocumentSource, db_session: Session
|
||||||
|
) -> bool:
|
||||||
|
stmt = select(Connector).where(
|
||||||
|
Connector.name == connector_name, Connector.source == source
|
||||||
|
)
|
||||||
result = db_session.execute(stmt)
|
result = db_session.execute(stmt)
|
||||||
connector = result.scalar_one_or_none()
|
connector = result.scalar_one_or_none()
|
||||||
return connector is not None
|
return connector is not None
|
||||||
@@ -67,7 +71,9 @@ def create_connector(
|
|||||||
connector_data: ConnectorBase,
|
connector_data: ConnectorBase,
|
||||||
db_session: Session,
|
db_session: Session,
|
||||||
) -> ObjectCreationIdResponse:
|
) -> ObjectCreationIdResponse:
|
||||||
if connector_by_name_exists(connector_data.name, db_session):
|
if connector_by_name_source_exists(
|
||||||
|
connector_data.name, connector_data.source, db_session
|
||||||
|
):
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"Connector by this name already exists, duplicate naming not allowed."
|
"Connector by this name already exists, duplicate naming not allowed."
|
||||||
)
|
)
|
||||||
@@ -95,8 +101,8 @@ def update_connector(
|
|||||||
if connector is None:
|
if connector is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if connector_data.name != connector.name and connector_by_name_exists(
|
if connector_data.name != connector.name and connector_by_name_source_exists(
|
||||||
connector_data.name, db_session
|
connector_data.name, connector_data.source, db_session
|
||||||
):
|
):
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"Connector by this name already exists, duplicate naming not allowed."
|
"Connector by this name already exists, duplicate naming not allowed."
|
||||||
|
@@ -173,9 +173,7 @@ class ConnectorCredentialPair(Base):
|
|||||||
unique=True,
|
unique=True,
|
||||||
nullable=False,
|
nullable=False,
|
||||||
)
|
)
|
||||||
name: Mapped[str] = mapped_column(
|
name: Mapped[str] = mapped_column(String, nullable=False)
|
||||||
String, unique=True, nullable=True
|
|
||||||
) # nullable for backwards compatability
|
|
||||||
connector_id: Mapped[int] = mapped_column(
|
connector_id: Mapped[int] = mapped_column(
|
||||||
ForeignKey("connector.id"), primary_key=True
|
ForeignKey("connector.id"), primary_key=True
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user