add built-in field check when doing old metadata migrate (#16371)
This commit is contained in:
@@ -12,6 +12,7 @@ from configs import dify_config
|
|||||||
from constants.languages import languages
|
from constants.languages import languages
|
||||||
from core.rag.datasource.vdb.vector_factory import Vector
|
from core.rag.datasource.vdb.vector_factory import Vector
|
||||||
from core.rag.datasource.vdb.vector_type import VectorType
|
from core.rag.datasource.vdb.vector_type import VectorType
|
||||||
|
from core.rag.index_processor.constant.built_in_field import BuiltInField
|
||||||
from core.rag.models.document import Document
|
from core.rag.models.document import Document
|
||||||
from events.app_event import app_was_created
|
from events.app_event import app_was_created
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
@@ -559,36 +560,25 @@ def old_metadata_migration():
|
|||||||
if document.doc_metadata:
|
if document.doc_metadata:
|
||||||
doc_metadata = document.doc_metadata
|
doc_metadata = document.doc_metadata
|
||||||
for key, value in doc_metadata.items():
|
for key, value in doc_metadata.items():
|
||||||
dataset_metadata = (
|
for field in BuiltInField:
|
||||||
db.session.query(DatasetMetadata)
|
if field.value == key:
|
||||||
.filter(DatasetMetadata.dataset_id == document.dataset_id, DatasetMetadata.name == key)
|
break
|
||||||
.first()
|
|
||||||
)
|
|
||||||
if not dataset_metadata:
|
|
||||||
dataset_metadata = DatasetMetadata(
|
|
||||||
tenant_id=document.tenant_id,
|
|
||||||
dataset_id=document.dataset_id,
|
|
||||||
name=key,
|
|
||||||
type="string",
|
|
||||||
created_by=document.created_by,
|
|
||||||
)
|
|
||||||
db.session.add(dataset_metadata)
|
|
||||||
db.session.flush()
|
|
||||||
dataset_metadata_binding = DatasetMetadataBinding(
|
|
||||||
tenant_id=document.tenant_id,
|
|
||||||
dataset_id=document.dataset_id,
|
|
||||||
metadata_id=dataset_metadata.id,
|
|
||||||
document_id=document.id,
|
|
||||||
created_by=document.created_by,
|
|
||||||
)
|
|
||||||
db.session.add(dataset_metadata_binding)
|
|
||||||
else:
|
else:
|
||||||
dataset_metadata_binding = DatasetMetadataBinding.query.filter(
|
dataset_metadata = (
|
||||||
DatasetMetadataBinding.dataset_id == document.dataset_id,
|
db.session.query(DatasetMetadata)
|
||||||
DatasetMetadataBinding.document_id == document.id,
|
.filter(DatasetMetadata.dataset_id == document.dataset_id, DatasetMetadata.name == key)
|
||||||
DatasetMetadataBinding.metadata_id == dataset_metadata.id,
|
.first()
|
||||||
).first()
|
)
|
||||||
if not dataset_metadata_binding:
|
if not dataset_metadata:
|
||||||
|
dataset_metadata = DatasetMetadata(
|
||||||
|
tenant_id=document.tenant_id,
|
||||||
|
dataset_id=document.dataset_id,
|
||||||
|
name=key,
|
||||||
|
type="string",
|
||||||
|
created_by=document.created_by,
|
||||||
|
)
|
||||||
|
db.session.add(dataset_metadata)
|
||||||
|
db.session.flush()
|
||||||
dataset_metadata_binding = DatasetMetadataBinding(
|
dataset_metadata_binding = DatasetMetadataBinding(
|
||||||
tenant_id=document.tenant_id,
|
tenant_id=document.tenant_id,
|
||||||
dataset_id=document.dataset_id,
|
dataset_id=document.dataset_id,
|
||||||
@@ -597,7 +587,22 @@ def old_metadata_migration():
|
|||||||
created_by=document.created_by,
|
created_by=document.created_by,
|
||||||
)
|
)
|
||||||
db.session.add(dataset_metadata_binding)
|
db.session.add(dataset_metadata_binding)
|
||||||
db.session.commit()
|
else:
|
||||||
|
dataset_metadata_binding = DatasetMetadataBinding.query.filter(
|
||||||
|
DatasetMetadataBinding.dataset_id == document.dataset_id,
|
||||||
|
DatasetMetadataBinding.document_id == document.id,
|
||||||
|
DatasetMetadataBinding.metadata_id == dataset_metadata.id,
|
||||||
|
).first()
|
||||||
|
if not dataset_metadata_binding:
|
||||||
|
dataset_metadata_binding = DatasetMetadataBinding(
|
||||||
|
tenant_id=document.tenant_id,
|
||||||
|
dataset_id=document.dataset_id,
|
||||||
|
metadata_id=dataset_metadata.id,
|
||||||
|
document_id=document.id,
|
||||||
|
created_by=document.created_by,
|
||||||
|
)
|
||||||
|
db.session.add(dataset_metadata_binding)
|
||||||
|
db.session.commit()
|
||||||
page += 1
|
page += 1
|
||||||
click.echo(click.style("Old metadata migration completed.", fg="green"))
|
click.echo(click.style("Old metadata migration completed.", fg="green"))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user