fix: build search and also return it in countAuthorStats() function

This commit is contained in:
P. Reis 2024-09-20 10:24:41 -03:00
parent 578f269a65
commit b13e924001

View file

@ -269,19 +269,27 @@ export async function updateEventStats(
/** Calculate author stats from the database. */ /** Calculate author stats from the database. */
export async function countAuthorStats( export async function countAuthorStats(
{ pubkey, kysely, store }: RefreshAuthorStatsOpts, { pubkey, store }: RefreshAuthorStatsOpts,
): Promise<Omit<DittoTables['author_stats'], 'search'>> { ): Promise<DittoTables['author_stats']> {
const [{ count: followers_count }, { count: notes_count }, [followList]] = await Promise.all([ const [{ count: followers_count }, { count: notes_count }, [followList], [kind0]] = await Promise.all([
store.count([{ kinds: [3], '#p': [pubkey] }]), store.count([{ kinds: [3], '#p': [pubkey] }]),
store.count([{ kinds: [1], authors: [pubkey] }]), store.count([{ kinds: [1], authors: [pubkey] }]),
store.query([{ kinds: [3], authors: [pubkey], limit: 1 }]), store.query([{ kinds: [3], authors: [pubkey], limit: 1 }]),
store.query([{ kinds: [0], authors: [pubkey], limit: 1 }]),
]); ]);
let search: string = '';
const metadata = n.json().pipe(n.metadata()).catch({}).safeParse(kind0?.content);
if (metadata.success) {
const { name, nip05 } = metadata.data;
search = [name, nip05].filter(Boolean).join(' ').trim();
}
return { return {
pubkey, pubkey,
followers_count, followers_count,
following_count: getTagSet(followList?.tags ?? [], 'p').size, following_count: getTagSet(followList?.tags ?? [], 'p').size,
notes_count, notes_count,
search,
}; };
} }