Make db:populate:nip05 script more efficient

This commit is contained in:
Alex Gleason 2025-02-07 17:48:07 -06:00
parent 5157a90b63
commit a4a26d7575
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7

View file

@ -5,40 +5,35 @@ import { faviconCache } from '@/utils/favicon.ts';
import { nip05Cache } from '@/utils/nip05.ts';
const store = await Storages.db();
const kysely = await Storages.kysely();
const statsQuery = kysely.selectFrom('author_stats').select('pubkey');
for await (const { pubkey } of statsQuery.stream(10)) {
const signal = AbortSignal.timeout(30_000); // generous timeout
for await (const msg of store.req([{ kinds: [0] }])) {
if (msg[0] === 'EVENT') {
const signal = AbortSignal.timeout(30_000); // generous timeout
const event = msg[2];
try {
const [author] = await store.query([{ kinds: [0], authors: [pubkey], limit: 1 }]);
try {
// Parse metadata.
const metadata = n.json().pipe(n.metadata()).catch({}).safeParse(event.content);
if (!metadata.success) continue;
if (!author) {
// Update nip05.
const { nip05 } = metadata.data;
if (nip05) {
try {
await nip05Cache.fetch(nip05, { signal });
} catch {
// Ignore.
}
}
// Update favicon.
const domain = nip05?.split('@')[1].toLowerCase();
if (domain) {
await faviconCache.fetch(domain, { signal });
}
} catch {
continue;
}
// Parse metadata.
const metadata = n.json().pipe(n.metadata()).catch({}).safeParse(author.content);
if (!metadata.success) continue;
// Update nip05.
const { nip05 } = metadata.data;
if (nip05) {
try {
await nip05Cache.fetch(nip05, { signal });
} catch {
// Ignore.
}
}
// Update favicon.
const domain = nip05?.split('@')[1].toLowerCase();
if (domain) {
await faviconCache.fetch(domain, { signal });
}
} catch {
continue;
}
}