From c7ee0f2a93e9699c4071de67f1b58877f2eb6179 Mon Sep 17 00:00:00 2001 From: -LAN- Date: Wed, 25 Jun 2025 10:18:20 +0800 Subject: [PATCH] fix(knowledge_base): Unchecked metadata name length (#21454) Signed-off-by: -LAN- --- api/services/metadata_service.py | 8 ++++++++ .../datasets/metadata/hooks/use-check-metadata-name.ts | 6 ++++++ web/i18n/en-US/dataset.ts | 1 + 3 files changed, 15 insertions(+) diff --git a/api/services/metadata_service.py b/api/services/metadata_service.py index 26d6d4ce1..cfcb12115 100644 --- a/api/services/metadata_service.py +++ b/api/services/metadata_service.py @@ -19,6 +19,10 @@ from services.entities.knowledge_entities.knowledge_entities import ( class MetadataService: @staticmethod def create_metadata(dataset_id: str, metadata_args: MetadataArgs) -> DatasetMetadata: + # check if metadata name is too long + if len(metadata_args.name) > 255: + raise ValueError("Metadata name cannot exceed 255 characters.") + # check if metadata name already exists if ( db.session.query(DatasetMetadata) @@ -42,6 +46,10 @@ class MetadataService: @staticmethod def update_metadata_name(dataset_id: str, metadata_id: str, name: str) -> DatasetMetadata: # type: ignore + # check if metadata name is too long + if len(name) > 255: + raise ValueError("Metadata name cannot exceed 255 characters.") + lock_key = f"dataset_metadata_lock_{dataset_id}" # check if metadata name already exists if ( diff --git a/web/app/components/datasets/metadata/hooks/use-check-metadata-name.ts b/web/app/components/datasets/metadata/hooks/use-check-metadata-name.ts index 45fe7675f..aea7efd5c 100644 --- a/web/app/components/datasets/metadata/hooks/use-check-metadata-name.ts +++ b/web/app/components/datasets/metadata/hooks/use-check-metadata-name.ts @@ -18,6 +18,12 @@ const useCheckMetadataName = () => { } } + if (name.length > 255) { + return { + errorMsg: t(`${i18nPrefix}.tooLong`, { max: 255 }), + } + } + return { errorMsg: '', } diff --git a/web/i18n/en-US/dataset.ts b/web/i18n/en-US/dataset.ts index 3e251d1bf..e5d3f5ff3 100644 --- a/web/i18n/en-US/dataset.ts +++ b/web/i18n/en-US/dataset.ts @@ -183,6 +183,7 @@ const translation = { checkName: { empty: 'Metadata name cannot be empty', invalid: 'Metadata name can only contain lowercase letters, numbers, and underscores and must start with a lowercase letter', + tooLong: 'Metadata name cannot exceed {{max}} characters', }, batchEditMetadata: { editMetadata: 'Edit Metadata',