fix: Resolve issue when metadata is updated

Resolve issue when attempting to update metadata related to data

Fix
This commit is contained in:
Igor Ilic 2024-12-04 14:03:01 +01:00
parent 3699b0dccb
commit 0a0b030df5
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"]