mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-14 03:55:52 +08:00
refactor: Delete the dataset to verify whether it is in use (#5112)
This commit is contained in:
parent
7189a4c379
commit
7f98c2ea3f
@ -8,7 +8,7 @@ import services
|
|||||||
from controllers.console import api
|
from controllers.console import api
|
||||||
from controllers.console.apikey import api_key_fields, api_key_list
|
from controllers.console.apikey import api_key_fields, api_key_list
|
||||||
from controllers.console.app.error import ProviderNotInitializeError
|
from controllers.console.app.error import ProviderNotInitializeError
|
||||||
from controllers.console.datasets.error import DatasetNameDuplicateError
|
from controllers.console.datasets.error import DatasetInUseError, DatasetNameDuplicateError
|
||||||
from controllers.console.setup import setup_required
|
from controllers.console.setup import setup_required
|
||||||
from controllers.console.wraps import account_initialization_required
|
from controllers.console.wraps import account_initialization_required
|
||||||
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
||||||
@ -217,10 +217,13 @@ class DatasetApi(Resource):
|
|||||||
if not current_user.is_admin_or_owner:
|
if not current_user.is_admin_or_owner:
|
||||||
raise Forbidden()
|
raise Forbidden()
|
||||||
|
|
||||||
|
try:
|
||||||
if DatasetService.delete_dataset(dataset_id_str, current_user):
|
if DatasetService.delete_dataset(dataset_id_str, current_user):
|
||||||
return {'result': 'success'}, 204
|
return {'result': 'success'}, 204
|
||||||
else:
|
else:
|
||||||
raise NotFound("Dataset not found.")
|
raise NotFound("Dataset not found.")
|
||||||
|
except services.errors.dataset.DatasetInUseError:
|
||||||
|
raise DatasetInUseError()
|
||||||
|
|
||||||
|
|
||||||
class DatasetQueryApi(Resource):
|
class DatasetQueryApi(Resource):
|
||||||
|
@ -71,3 +71,9 @@ class InvalidMetadataError(BaseHTTPException):
|
|||||||
error_code = 'invalid_metadata'
|
error_code = 'invalid_metadata'
|
||||||
description = "The metadata content is incorrect. Please check and verify."
|
description = "The metadata content is incorrect. Please check and verify."
|
||||||
code = 400
|
code = 400
|
||||||
|
|
||||||
|
|
||||||
|
class DatasetInUseError(BaseHTTPException):
|
||||||
|
error_code = 'dataset_in_use'
|
||||||
|
description = "The dataset is being used by some apps. Please remove the dataset from the apps before deleting it."
|
||||||
|
code = 409
|
||||||
|
@ -4,7 +4,7 @@ from werkzeug.exceptions import NotFound
|
|||||||
|
|
||||||
import services.dataset_service
|
import services.dataset_service
|
||||||
from controllers.service_api import api
|
from controllers.service_api import api
|
||||||
from controllers.service_api.dataset.error import DatasetNameDuplicateError
|
from controllers.service_api.dataset.error import DatasetInUseError, DatasetNameDuplicateError
|
||||||
from controllers.service_api.wraps import DatasetApiResource
|
from controllers.service_api.wraps import DatasetApiResource
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
from core.model_runtime.entities.model_entities import ModelType
|
||||||
from core.provider_manager import ProviderManager
|
from core.provider_manager import ProviderManager
|
||||||
@ -113,10 +113,13 @@ class DatasetApi(DatasetApiResource):
|
|||||||
|
|
||||||
dataset_id_str = str(dataset_id)
|
dataset_id_str = str(dataset_id)
|
||||||
|
|
||||||
|
try:
|
||||||
if DatasetService.delete_dataset(dataset_id_str, current_user):
|
if DatasetService.delete_dataset(dataset_id_str, current_user):
|
||||||
return {'result': 'success'}, 204
|
return {'result': 'success'}, 204
|
||||||
else:
|
else:
|
||||||
raise NotFound("Dataset not found.")
|
raise NotFound("Dataset not found.")
|
||||||
|
except services.errors.dataset.DatasetInUseError:
|
||||||
|
raise DatasetInUseError()
|
||||||
|
|
||||||
api.add_resource(DatasetListApi, '/datasets')
|
api.add_resource(DatasetListApi, '/datasets')
|
||||||
api.add_resource(DatasetApi, '/datasets/<uuid:dataset_id>')
|
api.add_resource(DatasetApi, '/datasets/<uuid:dataset_id>')
|
||||||
|
@ -71,3 +71,9 @@ class InvalidMetadataError(BaseHTTPException):
|
|||||||
error_code = 'invalid_metadata'
|
error_code = 'invalid_metadata'
|
||||||
description = "The metadata content is incorrect. Please check and verify."
|
description = "The metadata content is incorrect. Please check and verify."
|
||||||
code = 400
|
code = 400
|
||||||
|
|
||||||
|
|
||||||
|
class DatasetInUseError(BaseHTTPException):
|
||||||
|
error_code = 'dataset_in_use'
|
||||||
|
description = "The dataset is being used by some apps. Please remove the dataset from the apps before deleting it."
|
||||||
|
code = 409
|
||||||
|
@ -33,7 +33,7 @@ from models.dataset import (
|
|||||||
from models.model import UploadFile
|
from models.model import UploadFile
|
||||||
from models.source import DataSourceBinding
|
from models.source import DataSourceBinding
|
||||||
from services.errors.account import NoPermissionError
|
from services.errors.account import NoPermissionError
|
||||||
from services.errors.dataset import DatasetNameDuplicateError
|
from services.errors.dataset import DatasetInUseError, DatasetNameDuplicateError
|
||||||
from services.errors.document import DocumentIndexingError
|
from services.errors.document import DocumentIndexingError
|
||||||
from services.errors.file import FileNotExistsError
|
from services.errors.file import FileNotExistsError
|
||||||
from services.feature_service import FeatureModel, FeatureService
|
from services.feature_service import FeatureModel, FeatureService
|
||||||
@ -232,7 +232,9 @@ class DatasetService:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def delete_dataset(dataset_id, user):
|
def delete_dataset(dataset_id, user):
|
||||||
# todo: cannot delete dataset if it is being processed
|
count = AppDatasetJoin.query.filter_by(dataset_id=dataset_id).count()
|
||||||
|
if count > 0:
|
||||||
|
raise DatasetInUseError()
|
||||||
|
|
||||||
dataset = DatasetService.get_dataset(dataset_id)
|
dataset = DatasetService.get_dataset(dataset_id)
|
||||||
|
|
||||||
|
@ -3,3 +3,7 @@ from services.errors.base import BaseServiceError
|
|||||||
|
|
||||||
class DatasetNameDuplicateError(BaseServiceError):
|
class DatasetNameDuplicateError(BaseServiceError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class DatasetInUseError(BaseServiceError):
|
||||||
|
pass
|
||||||
|
Loading…
x
Reference in New Issue
Block a user