From a985d1add1c0c9fafcf6376aa7160417d364d1a6 Mon Sep 17 00:00:00 2001 From: Siddharth Singh Date: Sun, 17 Nov 2024 22:17:26 +0530 Subject: [PATCH] add cleanup script (apply policy to events created before it applied) --- deno.json | 1 + scripts/db-policy.ts | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 scripts/db-policy.ts diff --git a/deno.json b/deno.json index 4033136b..b1cf5cca 100644 --- a/deno.json +++ b/deno.json @@ -6,6 +6,7 @@ "hook": "deno run --allow-read --allow-run --allow-write https://deno.land/x/deno_hooks@0.1.1/mod.ts", "db:export": "deno run -A --env-file --deny-read=.env scripts/db-export.ts", "db:import": "deno run -A --env-file --deny-read=.env scripts/db-import.ts", + "db:cleanup": "deno run -A --env-file --deny-read=.env scripts/db-policy.ts", "db:migrate": "deno run -A --env-file --deny-read=.env scripts/db-migrate.ts", "nostr:pull": "deno run -A --env-file --deny-read=.env scripts/nostr-pull.ts", "debug": "deno run -A --env-file --deny-read=.env --inspect src/server.ts", diff --git a/scripts/db-policy.ts b/scripts/db-policy.ts new file mode 100644 index 00000000..1b65b961 --- /dev/null +++ b/scripts/db-policy.ts @@ -0,0 +1,22 @@ +import { policyWorker } from '@/workers/policy.ts'; +import { Storages } from '@/storages.ts'; + +const db = await Storages.db(); +const ids = []; + +for await (const msg of db.req([{}])) { + const [type, , event] = msg; + if (type === 'EOSE') console.log('EOSE'); + if (type !== 'EVENT') continue; + const [, , ok] = await policyWorker.call(event, AbortSignal.timeout(5000)); + if (!ok) ids.push(event.id); +} + +try { + await db.remove([{ ids }]); + console.log(`Cleaned up ${ids.length} events from the db.`); + Deno.exit(0); +} catch (e) { + console.error(e); + Deno.exit(1); +}