diff --git a/deno.json b/deno.json index b7a7cd9a..b37f7e8c 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..4be3c4ef --- /dev/null +++ b/scripts/db-policy.ts @@ -0,0 +1,19 @@ +import { policyWorker } from '@/workers/policy.ts'; +import { Storages } from '@/storages.ts'; + +const db = await Storages.db(); +let count = 0; + +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) { + await db.remove([{ ids: [event.id] }]); + count += 1; + } +} + +console.log(`Cleaned up ${count} events from the db.`); +Deno.exit(0);