| @@ -12,6 +12,7 @@ from configs import dify_config | |||
| from constants.languages import languages | |||
| from core.rag.datasource.vdb.vector_factory import Vector | |||
| 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 events.app_event import app_was_created | |||
| from extensions.ext_database import db | |||
| @@ -559,36 +560,25 @@ def old_metadata_migration(): | |||
| if document.doc_metadata: | |||
| doc_metadata = document.doc_metadata | |||
| for key, value in doc_metadata.items(): | |||
| dataset_metadata = ( | |||
| db.session.query(DatasetMetadata) | |||
| .filter(DatasetMetadata.dataset_id == document.dataset_id, DatasetMetadata.name == key) | |||
| .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) | |||
| for field in BuiltInField: | |||
| if field.value == key: | |||
| break | |||
| 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 = ( | |||
| db.session.query(DatasetMetadata) | |||
| .filter(DatasetMetadata.dataset_id == document.dataset_id, DatasetMetadata.name == key) | |||
| .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, | |||
| @@ -597,7 +587,22 @@ def old_metadata_migration(): | |||
| created_by=document.created_by, | |||
| ) | |||
| 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 | |||
| click.echo(click.style("Old metadata migration completed.", fg="green")) | |||