Delete all files on report recall
This commit is contained in:
parent
4978659bf9
commit
fbe054b211
@ -1,3 +1,4 @@
|
||||
import { GetAccessToken } from "../../gcloud.js";
|
||||
import { jsonError } from "../../common.js";
|
||||
|
||||
export async function onRequestPost(context: RequestContext) {
|
||||
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user