delete observation repository

This commit is contained in:
phernandez
2024-12-15 10:50:25 -06:00
parent b03e7229a9
commit b1ec3bca26
6 changed files with 342 additions and 75 deletions
@@ -1,6 +1,6 @@
"""Repository for managing Observation objects."""
from typing import Sequence
from sqlalchemy import select
from typing import Sequence, Dict, Any
from sqlalchemy import select, and_, delete
from basic_memory.models import Observation
from basic_memory.repository import Repository
@@ -22,4 +22,12 @@ class ObservationRepository(Repository[Observation]):
"""Find observations with a specific context."""
query = select(Observation).filter(Observation.context == context)
result = await self.execute_query(query)
return result.scalars().all()
return result.scalars().all()
async def delete_by_fields(self, **filters: Dict[str, Any]) -> bool:
"""Delete observations matching the given field values."""
conditions = [getattr(Observation, field) == value for field, value in filters.items()]
query = delete(Observation).where(and_(*conditions))
result = await self.execute_query(query)
await self.session.flush()
return result.rowcount > 0 # pyright: ignore [reportAttributeAccessIssue]