feat: ensure board group deletion also removes associated board group memory

This commit is contained in:
Abhimanyu Saharan
2026-02-09 00:17:25 +05:30
parent 05c0f851f6
commit fd01320f1b
2 changed files with 47 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ from app.db import crud
from app.db.pagination import paginate
from app.db.session import get_session
from app.models.agents import Agent
from app.models.board_group_memory import BoardGroupMemory
from app.models.board_groups import BoardGroup
from app.models.boards import Board
from app.models.gateways import Gateway
@@ -279,6 +280,9 @@ async def delete_board_group(
await session.execute(
update(Board).where(col(Board.board_group_id) == group_id).values(board_group_id=None)
)
await session.execute(
delete(BoardGroupMemory).where(col(BoardGroupMemory.board_group_id) == group_id)
)
await session.execute(delete(BoardGroup).where(col(BoardGroup.id) == group_id))
await session.commit()
return OkResponse()

View File

@@ -0,0 +1,43 @@
from __future__ import annotations
from dataclasses import dataclass, field
from types import SimpleNamespace
from typing import Any
from uuid import uuid4
import pytest
from app.api import board_groups
@dataclass
class _FakeSession:
executed: list[Any] = field(default_factory=list)
committed: int = 0
async def execute(self, statement: Any) -> None:
self.executed.append(statement)
async def commit(self) -> None:
self.committed += 1
@pytest.mark.asyncio
async def test_delete_board_group_cleans_group_memory_first(
monkeypatch: pytest.MonkeyPatch,
) -> None:
group_id = uuid4()
async def _fake_require_group_access(*_args: Any, **_kwargs: Any) -> None:
return None
monkeypatch.setattr(board_groups, "_require_group_access", _fake_require_group_access)
session = _FakeSession()
ctx = SimpleNamespace(member=object())
await board_groups.delete_board_group(group_id=group_id, session=session, ctx=ctx)
statement_tables = [statement.table.name for statement in session.executed]
assert statement_tables == ["boards", "board_group_memory", "board_groups"]
assert session.committed == 1