feat(trash): exclude trashed rows from events/projects/milestones/rulebooks/embeddings reads + filtering tests

This commit is contained in:
2026-05-28 20:33:40 -04:00
parent e7f214fc80
commit eb41e772cd
6 changed files with 152 additions and 9 deletions
+7 -1
View File
@@ -134,7 +134,9 @@ async def get_event(user_id: int, event_id: int) -> Event | None:
"""Return event owned by user_id, or None."""
async with async_session() as session:
result = await session.execute(
select(Event).where(Event.id == event_id, Event.user_id == user_id)
select(Event).where(
Event.id == event_id, Event.user_id == user_id, Event.deleted_at.is_(None)
)
)
return result.scalar_one_or_none()
@@ -164,6 +166,7 @@ async def list_events(
select(Event)
.where(
Event.user_id == user_id,
Event.deleted_at.is_(None),
or_(
Event.recurrence.isnot(None),
Event.start_dt <= date_to,
@@ -232,6 +235,7 @@ async def search_events(
async with async_session() as session:
where = [
Event.user_id == user_id,
Event.deleted_at.is_(None),
or_(
Event.title.ilike(q),
Event.description.ilike(q),
@@ -337,6 +341,7 @@ async def find_events_by_query(user_id: int, query: str) -> list[Event]:
upcoming = (await session.execute(
select(Event).where(
Event.user_id == user_id,
Event.deleted_at.is_(None),
Event.title.ilike(q),
Event.start_dt >= now,
).order_by(Event.start_dt)
@@ -346,6 +351,7 @@ async def find_events_by_query(user_id: int, query: str) -> list[Event]:
past = (await session.execute(
select(Event).where(
Event.user_id == user_id,
Event.deleted_at.is_(None),
Event.title.ilike(q),
Event.start_dt < now,
).order_by(Event.start_dt.desc())