mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
trends: maybe make postgres trends work?
This commit is contained in:
parent
8db5489350
commit
8dc3b5d5a7
1 changed files with 29 additions and 20 deletions
|
|
@ -1,5 +1,6 @@
|
|||
import { NostrFilter } from '@nostrify/nostrify';
|
||||
import { Stickynotes } from '@soapbox/stickynotes';
|
||||
import { sql } from 'kysely';
|
||||
|
||||
import { Conf } from '@/config.ts';
|
||||
import { DittoDatabase, DittoDB } from '@/db/DittoDB.ts';
|
||||
|
|
@ -18,7 +19,8 @@ export async function getTrendingTagValues(
|
|||
/** Filter of eligible events. */
|
||||
filter: NostrFilter,
|
||||
): Promise<{ value: string; authors: number; uses: number }[]> {
|
||||
/*
|
||||
if (dialect === 'postgres') {
|
||||
const { rows } = await sql<{ value: string; authors: number; uses: number }>`
|
||||
SELECT
|
||||
LOWER(element.value) AS value,
|
||||
COUNT(DISTINCT nostr_events.pubkey) AS authors,
|
||||
|
|
@ -28,16 +30,23 @@ export async function getTrendingTagValues(
|
|||
jsonb_each_text(nostr_events.tags_index) kv,
|
||||
jsonb_array_elements_text(kv.value::jsonb) element
|
||||
WHERE
|
||||
kv.key = 't'
|
||||
AND nostr_events.kind = 1
|
||||
AND nostr_events.created_at >= 1723325796
|
||||
AND nostr_events.created_at <= 1723412196
|
||||
kv.key = ANY(${tagNames})
|
||||
${filter.kinds ? sql`AND nostr_events.kind = ANY(${filter.kinds})` : sql``}
|
||||
${typeof filter.since === 'number' ? sql`AND nostr_events.created_at >= ${filter.since}` : sql``}
|
||||
${typeof filter.until === 'number' ? sql`AND nostr_events.created_at <= ${filter.until}` : sql``}
|
||||
GROUP BY
|
||||
LOWER(element.value)
|
||||
ORDER BY
|
||||
COUNT(DISTINCT nostr_events.pubkey) DESC
|
||||
LIMIT 20;
|
||||
*/
|
||||
${typeof filter.limit === 'number' ? sql`LIMIT ${filter.limit}` : sql``};`
|
||||
.execute(kysely);
|
||||
|
||||
return rows.map((row) => ({
|
||||
value: row.value,
|
||||
authors: Number(row.authors),
|
||||
uses: Number(row.uses),
|
||||
}));
|
||||
}
|
||||
|
||||
if (dialect === 'sqlite') {
|
||||
let query = kysely
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue