From 8856bf1b5810aa905071797928f6f89c32d33fa1 Mon Sep 17 00:00:00 2001 From: Rhys Date: Tue, 9 Dec 2025 14:39:54 +0700 Subject: [PATCH 1/2] fix: handle dataset name duplication --- ...-c0dc2235f174_add_index_to_dataset_name.py | 31 +++++++++++++++++++ api/models/dataset.py | 1 + api/services/dataset_service.py | 10 +++++- 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 api/migrations/versions/2025_12_10_0925-c0dc2235f174_add_index_to_dataset_name.py diff --git a/api/migrations/versions/2025_12_10_0925-c0dc2235f174_add_index_to_dataset_name.py b/api/migrations/versions/2025_12_10_0925-c0dc2235f174_add_index_to_dataset_name.py new file mode 100644 index 0000000000..7080392942 --- /dev/null +++ b/api/migrations/versions/2025_12_10_0925-c0dc2235f174_add_index_to_dataset_name.py @@ -0,0 +1,31 @@ +"""add_index_to_dataset_name + +Revision ID: c0dc2235f174 +Revises: 09cfdda155d1 +Create Date: 2025-12-10 09:25:54.480660 + +""" +from alembic import op +import models as models +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = 'c0dc2235f174' +down_revision = '09cfdda155d1' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('datasets', schema=None) as batch_op: + batch_op.create_index('dataset_tenant_name_idx', ['tenant_id', 'name'], unique=False) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('datasets', schema=None) as batch_op: + batch_op.drop_index('dataset_tenant_name_idx') + # ### end Alembic commands ### diff --git a/api/models/dataset.py b/api/models/dataset.py index ba2eaf6749..4e087523f4 100644 --- a/api/models/dataset.py +++ b/api/models/dataset.py @@ -46,6 +46,7 @@ class Dataset(Base): __table_args__ = ( sa.PrimaryKeyConstraint("id", name="dataset_pkey"), sa.Index("dataset_tenant_idx", "tenant_id"), + sa.Index("dataset_tenant_name_idx", "tenant_id", "name"), adjusted_json_index("retrieval_model_idx", "retrieval_model"), ) diff --git a/api/services/dataset_service.py b/api/services/dataset_service.py index 00f06e9405..dda5c5b39f 100644 --- a/api/services/dataset_service.py +++ b/api/services/dataset_service.py @@ -2356,7 +2356,15 @@ class DocumentService: cut_length = 18 cut_name = documents[0].name[:cut_length] - dataset.name = cut_name + "..." + proposed_name = cut_name + "..." + + # Check for duplicate names and auto-increment if needed + existing_dataset_names = db.session.scalars( + select(Dataset.name).where(Dataset.tenant_id == tenant_id, Dataset.name.like(f"{proposed_name}%")) + ).all() + if existing_dataset_names: + proposed_name = generate_incremental_name(existing_dataset_names, proposed_name) + dataset.name = proposed_name dataset.description = "useful for when you want to answer queries about the " + documents[0].name db.session.commit() From 686ab0852fa08f6b0819d98659befcee6344b3cc Mon Sep 17 00:00:00 2001 From: Rhys Date: Wed, 10 Dec 2025 11:29:26 +0700 Subject: [PATCH 2/2] fix: multiple head revisions error --- ..._10_1126-8797680b6263_add_index_to_dataset_name.py} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename api/migrations/versions/{2025_12_10_0925-c0dc2235f174_add_index_to_dataset_name.py => 2025_12_10_1126-8797680b6263_add_index_to_dataset_name.py} (83%) diff --git a/api/migrations/versions/2025_12_10_0925-c0dc2235f174_add_index_to_dataset_name.py b/api/migrations/versions/2025_12_10_1126-8797680b6263_add_index_to_dataset_name.py similarity index 83% rename from api/migrations/versions/2025_12_10_0925-c0dc2235f174_add_index_to_dataset_name.py rename to api/migrations/versions/2025_12_10_1126-8797680b6263_add_index_to_dataset_name.py index 7080392942..095ea85857 100644 --- a/api/migrations/versions/2025_12_10_0925-c0dc2235f174_add_index_to_dataset_name.py +++ b/api/migrations/versions/2025_12_10_1126-8797680b6263_add_index_to_dataset_name.py @@ -1,8 +1,8 @@ """add_index_to_dataset_name -Revision ID: c0dc2235f174 -Revises: 09cfdda155d1 -Create Date: 2025-12-10 09:25:54.480660 +Revision ID: 8797680b6263 +Revises: d57accd375ae +Create Date: 2025-12-10 11:26:04.884783 """ from alembic import op @@ -11,8 +11,8 @@ import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. -revision = 'c0dc2235f174' -down_revision = '09cfdda155d1' +revision = '8797680b6263' +down_revision = 'd57accd375ae' branch_labels = None depends_on = None