diff --git a/internal/handlers/event_body.go b/internal/handlers/event_body.go index cf2452f..e0b242c 100644 --- a/internal/handlers/event_body.go +++ b/internal/handlers/event_body.go @@ -15,10 +15,12 @@ import ( // eventBodyQuery reads one event's stored body as bytes. The cast // to blob is what makes the driver hand back the stored bytes // rather than a string conversion, so Content-Length taken from -// the result matches what goes on the wire. The soft-delete -// predicate is spelled out because Raw bypasses GORM's default -// scope, and it is what stops a reaped event still being -// downloadable. +// the result matches what goes on the wire. The retention reaper +// deletes event rows outright, so a reaped event is simply gone +// and the query finds no row. The deleted_at predicate repeats +// the soft-delete scope GORM adds to its own queries, which Raw +// bypasses; nothing soft-deletes an event, so today it excludes +// nothing. const eventBodyQuery = "SELECT cast(body as blob) " + "FROM events WHERE id = ? AND webhook_id = ? AND deleted_at IS NULL"