| 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 | ||||
| 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 = ( | |||||
| 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: | 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( | dataset_metadata_binding = DatasetMetadataBinding( | ||||
| tenant_id=document.tenant_id, | tenant_id=document.tenant_id, | ||||
| dataset_id=document.dataset_id, | dataset_id=document.dataset_id, | ||||
| 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")) | ||||