Add endpoint for deleting raw packets of decrypted messages

This commit is contained in:
Jack Kingsman
2026-02-21 00:10:29 -08:00
parent 6d0505ade6
commit 11f07f3501
6 changed files with 135 additions and 13 deletions
+34
View File
@@ -887,6 +887,23 @@ class TestRawPacketRepository:
deleted = await RawPacketRepository.prune_old_undecrypted(10)
assert deleted == 0
@pytest.mark.asyncio
async def test_purge_linked_to_messages_deletes_only_linked_packets(self, test_db):
"""Purge linked raw packets removes only rows with a message_id."""
ts = int(time.time())
linked_1, _ = await RawPacketRepository.create(b"\x01\x02\x03", ts)
linked_2, _ = await RawPacketRepository.create(b"\x04\x05\x06", ts)
await RawPacketRepository.mark_decrypted(linked_1, 101)
await RawPacketRepository.mark_decrypted(linked_2, 102)
await RawPacketRepository.create(b"\x07\x08\x09", ts) # undecrypted, should remain
deleted = await RawPacketRepository.purge_linked_to_messages()
assert deleted == 2
remaining = await RawPacketRepository.get_undecrypted_count()
assert remaining == 1
class TestMaintenanceEndpoint:
"""Test database maintenance endpoint."""
@@ -909,6 +926,23 @@ class TestMaintenanceEndpoint:
assert result.packets_deleted == 2
assert result.vacuumed is True
@pytest.mark.asyncio
async def test_maintenance_can_purge_linked_raw_packets(self, test_db):
"""Maintenance endpoint can purge raw packets linked to messages."""
from app.routers.packets import MaintenanceRequest, run_maintenance
ts = int(time.time())
linked_1, _ = await RawPacketRepository.create(b"\x0A\x0B\x0C", ts)
linked_2, _ = await RawPacketRepository.create(b"\x0D\x0E\x0F", ts)
await RawPacketRepository.mark_decrypted(linked_1, 201)
await RawPacketRepository.mark_decrypted(linked_2, 202)
request = MaintenanceRequest(purge_linked_raw_packets=True)
result = await run_maintenance(request)
assert result.packets_deleted == 2
assert result.vacuumed is True
class TestHealthEndpointDatabaseSize:
"""Test database size reporting in health endpoint."""