Merge pull request #249 from topoteretes/fix-metadata-update

fix: Resolve issue when metadata is updated
This commit is contained in:
Igor Ilic 2024-12-04 14:14:04 +01:00 committed by GitHub
commit d793a5d9b5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 8 deletions

View file

@ -4,6 +4,7 @@ import re
import warnings import warnings
from typing import Any from typing import Any
from uuid import UUID from uuid import UUID
from sqlalchemy import select
from typing import Any, BinaryIO, Union from typing import Any, BinaryIO, Union
from cognee.infrastructure.databases.relational import get_relational_engine from cognee.infrastructure.databases.relational import get_relational_engine
@ -15,13 +16,24 @@ async def write_metadata(data_item: Union[BinaryIO, str, Any], data_id: UUID, fi
metadata_dict = get_metadata_dict(data_item, file_metadata) metadata_dict = get_metadata_dict(data_item, file_metadata)
db_engine = get_relational_engine() db_engine = get_relational_engine()
async with db_engine.get_async_session() as session: async with db_engine.get_async_session() as session:
metadata = Metadata(
id=data_id, metadata = (
metadata_repr=json.dumps(metadata_dict), await session.execute(select(Metadata).filter(Metadata.data_id == data_id))
metadata_source=parse_type(type(data_item)), ).scalar_one_or_none()
data_id=data_id
) if metadata is not None:
session.add(metadata) metadata.metadata_repr = json.dumps(metadata_dict)
metadata.metadata_source = parse_type(type(data_item))
await session.merge(metadata)
else:
metadata = Metadata(
id=data_id,
metadata_repr=json.dumps(metadata_dict),
metadata_source=parse_type(type(data_item)),
data_id=data_id
)
session.add(metadata)
await session.commit() await session.commit()

View file

@ -75,7 +75,6 @@ async def ingest_data_with_metadata(data: Any, dataset_name: str, user: User):
).scalar_one_or_none() ).scalar_one_or_none()
if data_point is not None: if data_point is not None:
await delete_metadata(data_point.metadata_id)
data_point.name = file_metadata["name"] data_point.name = file_metadata["name"]
data_point.raw_data_location = file_metadata["file_path"] data_point.raw_data_location = file_metadata["file_path"]
data_point.extension = file_metadata["extension"] data_point.extension = file_metadata["extension"]