diff --git a/api/controllers/console/datasets/datasets.py b/api/controllers/console/datasets/datasets.py index d5196aae61..fdd61b0a0c 100644 --- a/api/controllers/console/datasets/datasets.py +++ b/api/controllers/console/datasets/datasets.py @@ -226,6 +226,15 @@ class DatasetApi(Resource): except services.errors.dataset.DatasetInUseError: raise DatasetInUseError() +class DatasetUseCheckApi(Resource): + @setup_required + @login_required + @account_initialization_required + def get(self, dataset_id): + dataset_id_str = str(dataset_id) + + dataset_is_using = DatasetService.dataset_use_check(dataset_id_str) + return {'is_using': dataset_is_using}, 200 class DatasetQueryApi(Resource): @@ -562,6 +571,7 @@ class DatasetErrorDocs(Resource): api.add_resource(DatasetListApi, '/datasets') api.add_resource(DatasetApi, '/datasets/') +api.add_resource(DatasetUseCheckApi, '/datasets//use-check') api.add_resource(DatasetQueryApi, '/datasets//queries') api.add_resource(DatasetErrorDocs, '/datasets//error-docs') api.add_resource(DatasetIndexingEstimateApi, '/datasets/indexing-estimate') diff --git a/api/services/dataset_service.py b/api/services/dataset_service.py index 38ef874af3..6207a1a45c 100644 --- a/api/services/dataset_service.py +++ b/api/services/dataset_service.py @@ -34,7 +34,7 @@ from models.dataset import ( from models.model import UploadFile from models.source import DataSourceOauthBinding from services.errors.account import NoPermissionError -from services.errors.dataset import DatasetInUseError, DatasetNameDuplicateError +from services.errors.dataset import DatasetNameDuplicateError from services.errors.document import DocumentIndexingError from services.errors.file import FileNotExistsError from services.feature_service import FeatureModel, FeatureService @@ -234,9 +234,6 @@ class DatasetService: @staticmethod def delete_dataset(dataset_id, user): - count = AppDatasetJoin.query.filter_by(dataset_id=dataset_id).count() - if count > 0: - raise DatasetInUseError() dataset = DatasetService.get_dataset(dataset_id) @@ -251,6 +248,13 @@ class DatasetService: db.session.commit() return True + @staticmethod + def dataset_use_check(dataset_id) -> bool: + count = AppDatasetJoin.query.filter_by(dataset_id=dataset_id).count() + if count > 0: + return True + return False + @staticmethod def check_dataset_permission(dataset, user): if dataset.tenant_id != user.current_tenant_id: