Skip to content
File

Blob: src/worker/queues/workspace-sites-cleanup.ts

typescript28 lines
1import { createLogger } from "@/worker/lib/logger";
2import type { TasksQueueResult } from "./messages";
3 
4const log = createLogger("workspace-sites-cleanup");
5 
6export async function handleWorkspaceSitesCleanup(
7 workspaceId: string,
8 env: Pick<Env, "SITES">,
9): Promise<TasksQueueResult> {
10 const prefix = `${workspaceId}/`;
11 let cursor: string | undefined;
12 let deletedObjects = 0;
13 let batches = 0;
14 
15 do {
16 const listing = await env.SITES.list({ prefix, cursor });
17 if (listing.objects.length > 0) {
18 await env.SITES.delete(listing.objects.map((object) => object.key));
19 deletedObjects += listing.objects.length;
20 batches += 1;
21 }
22 cursor = listing.truncated ? listing.cursor : undefined;
23 } while (cursor);
24 
25 log.info("sites_cleanup_completed", { workspaceId, deletedObjects, batches });
26 return { kind: "ok" };
27}