Page MenuHomePhabricator

D13733.id45260.diff
No OneTemporary

D13733.id45260.diff

diff --git a/keyserver/src/deleters/link-deleters.js b/keyserver/src/deleters/link-deleters.js
--- a/keyserver/src/deleters/link-deleters.js
+++ b/keyserver/src/deleters/link-deleters.js
@@ -84,4 +84,24 @@
await deleteInviteLinks(inviteLinksToDelete);
}
-export { deleteInviteLink, deleteOrphanedInviteLinks };
+async function deleteInviteLinksForThreadIDs(
+ threadIDs: $ReadOnlyArray<string>,
+): Promise<void> {
+ const [selectResults] = await dbQuery(SQL`
+ SELECT id, name, blob_holder AS blobHolder
+ FROM invite_links
+ WHERE community IN (${threadIDs}) OR thread IN (${threadIDs})
+ `);
+ const inviteLinksToDelete = selectResults.map(({ id, name, blobHolder }) => ({
+ id,
+ name,
+ blobHolder,
+ }));
+ await deleteInviteLinks(inviteLinksToDelete);
+}
+
+export {
+ deleteInviteLink,
+ deleteOrphanedInviteLinks,
+ deleteInviteLinksForThreadIDs,
+};
diff --git a/keyserver/src/deleters/thread-deleters.js b/keyserver/src/deleters/thread-deleters.js
--- a/keyserver/src/deleters/thread-deleters.js
+++ b/keyserver/src/deleters/thread-deleters.js
@@ -9,6 +9,7 @@
import { updateTypes } from 'lib/types/update-types-enum.js';
import { ServerError } from 'lib/utils/errors.js';
+import { deleteInviteLinksForThreadIDs } from './link-deleters.js';
import { createUpdates } from '../creators/update-creator.js';
import { dbQuery, SQL } from '../database/database.js';
import {
@@ -87,7 +88,7 @@
const [{ viewerUpdates }] = await Promise.all([
createUpdates(updateDatas, { viewer, updatesForCurrentSession: 'return' }),
- deleteThreadsFromDB(threadIDs),
+ deleteThreads(threadIDs),
]);
return { updatesResult: { newUpdates: viewerUpdates } };
@@ -106,9 +107,7 @@
await removeBlobHolders(blobHolders);
}
-function deleteThreadsFromDB(
- threadIDs: $ReadOnlyArray<string>,
-): Promise<mixed> {
+async function deleteThreads(threadIDs: $ReadOnlyArray<string>): Promise<void> {
const deletionQuery = SQL`
START TRANSACTION;
DELETE FROM threads WHERE id IN (${threadIDs});
@@ -141,7 +140,10 @@
WHERE n.thread IN (${threadIDs});
COMMIT;
`;
- return dbQuery(deletionQuery, { multipleStatements: true });
+ await Promise.all([
+ dbQuery(deletionQuery, { multipleStatements: true }),
+ deleteInviteLinksForThreadIDs(threadIDs),
+ ]);
}
async function deleteInaccessibleThreads(): Promise<void> {
@@ -163,7 +165,7 @@
}
const containerIDs = [...threadIDs];
await fetchAndDeleteThreadBlobHolders(containerIDs);
- await deleteThreadsFromDB(containerIDs);
+ await deleteThreads(containerIDs);
}
export { deleteThread, deleteInaccessibleThreads };

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 19, 1:38 AM (22 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2320022
Default Alt Text
D13733.id45260.diff (2 KB)

Event Timeline