Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Delete all files on report recall
  • Loading branch information
regalijan committed Oct 19, 2023
1 parent 4978659 commit fbe054b
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions functions/api/reports/recall.ts
@@ -1,3 +1,4 @@
import { GetAccessToken } from "../../gcloud.js";
import { jsonError } from "../../common.js";

export async function onRequestPost(context: RequestContext) {
Expand All @@ -14,7 +15,42 @@ export async function onRequestPost(context: RequestContext) {
)
return jsonError("No processing report with that ID found", 404);

const data: { [k: string]: any } | null = await context.env.DATA.get(
`report_${id}`,
{ type: "json" },
);

if (!data) return jsonError("Report doesn't exist", 404);

const accessToken = await GetAccessToken(context.env);
const attachmentDeletePromises = [];
const existingAttachments = [...data.attachments];

for (const attachment of existingAttachments) {
if (!attachment.startsWith("t/")) data.attachments.push(`t/${attachment}`);
else data.attachments.push(attachment.replace("t/", ""));
}

for (const attachment of data.attachments)
attachmentDeletePromises.push(
fetch(
`https://storage.googleapis.com/storage/v1/b/portal-carcrushers-cc/o/${encodeURIComponent(
attachment,
)}`,
{
headers: {
authorization: `Bearer ${accessToken}`,
},
method: "DELETE",
},
),
);

await Promise.allSettled(attachmentDeletePromises);
await context.env.DATA.delete(`report_${id}`);
await context.env.D1.prepare("DELETE FROM reports WHERE id = ?;")
.bind(id)
.run();

return new Response(null, {
status: 204,
Expand Down

0 comments on commit fbe054b

Please sign in to comment.