|
|
|
|
@ -184,7 +184,7 @@ class DatasetService:
|
|
|
|
|
return dataset
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def get_dataset(dataset_id):
|
|
|
|
|
def get_dataset(dataset_id) -> Dataset:
|
|
|
|
|
return Dataset.query.filter_by(id=dataset_id).first()
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
@ -225,10 +225,32 @@ class DatasetService:
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def update_dataset(dataset_id, data, user):
|
|
|
|
|
data.pop("partial_member_list", None)
|
|
|
|
|
filtered_data = {k: v for k, v in data.items() if v is not None or k == "description"}
|
|
|
|
|
dataset = DatasetService.get_dataset(dataset_id)
|
|
|
|
|
|
|
|
|
|
DatasetService.check_dataset_permission(dataset, user)
|
|
|
|
|
if dataset.provider == "external":
|
|
|
|
|
dataset.retrieval_model = data.get("external_retrieval_model", None)
|
|
|
|
|
dataset.name = data.get("name", dataset.name)
|
|
|
|
|
dataset.description = data.get("description", "")
|
|
|
|
|
external_knowledge_id = data.get("external_knowledge_id", None)
|
|
|
|
|
db.session.add(dataset)
|
|
|
|
|
if not external_knowledge_id:
|
|
|
|
|
raise ValueError("External knowledge id is required.")
|
|
|
|
|
external_knowledge_api_id = data.get("external_knowledge_api_id", None)
|
|
|
|
|
if not external_knowledge_api_id:
|
|
|
|
|
raise ValueError("External knowledge api id is required.")
|
|
|
|
|
external_knowledge_binding = ExternalKnowledgeBindings.query.filter_by(dataset_id=dataset_id).first()
|
|
|
|
|
if (
|
|
|
|
|
external_knowledge_binding.external_knowledge_id != external_knowledge_id
|
|
|
|
|
or external_knowledge_binding.external_knowledge_api_id != external_knowledge_api_id
|
|
|
|
|
):
|
|
|
|
|
external_knowledge_binding.external_knowledge_id = external_knowledge_id
|
|
|
|
|
external_knowledge_binding.external_knowledge_api_id = external_knowledge_api_id
|
|
|
|
|
db.session.add(external_knowledge_binding)
|
|
|
|
|
db.session.commit()
|
|
|
|
|
else:
|
|
|
|
|
data.pop("partial_member_list", None)
|
|
|
|
|
filtered_data = {k: v for k, v in data.items() if v is not None or k == "description"}
|
|
|
|
|
action = None
|
|
|
|
|
if dataset.indexing_technique != data["indexing_technique"]:
|
|
|
|
|
# if update indexing_technique
|
|
|
|
|
|