From f879315d342de9959467dad52ef83835de565f7f Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Wed, 22 Jan 2025 20:25:40 -0300 Subject: [PATCH] feat: script to populate mime-type --- deno.json | 1 + scripts/db-populate-mime-type.ts | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 scripts/db-populate-mime-type.ts diff --git a/deno.json b/deno.json index 3c9eef1a..65303cb4 100644 --- a/deno.json +++ b/deno.json @@ -22,6 +22,7 @@ "trends": "deno run -A --env-file --deny-read=.env scripts/trends.ts", "clean:deps": "deno cache --reload src/app.ts", "db:populate-search": "deno run -A --env-file --deny-read=.env scripts/db-populate-search.ts", + "db:populate-mime-type": "deno run -A --env-file --deny-read=.env scripts/db-populate-mime-type.ts", "vapid": "deno run scripts/vapid.ts" }, "unstable": [ diff --git a/scripts/db-populate-mime-type.ts b/scripts/db-populate-mime-type.ts new file mode 100644 index 00000000..9608b80e --- /dev/null +++ b/scripts/db-populate-mime-type.ts @@ -0,0 +1,29 @@ +import { Storages } from '@/storages.ts'; + +const store = await Storages.db(); +const kysely = await Storages.kysely(); + +for await (const msg of store.req([{ kinds: [1] }])) { // Only kind 1 can contain media in Ditto? + if (msg[0] === 'EVENT') { + const event = msg[2]; + + const imeta = event.tags.find(([value]) => value === 'imeta'); + if (!imeta) continue; + + const mime_type = imeta.find((value) => value?.split(' ')[0] === 'm')?.split(' ')[1]; + if (!mime_type) continue; + + try { + await kysely.updateTable('nostr_events') + .set('mime_type', mime_type) + .where('id', '=', event.id) + .execute(); + } catch { + // do nothing + } + } else { + break; + } +} + +Deno.exit();