ditto/scripts/trends.ts
2025-02-22 19:27:53 -06:00

52 lines
1.5 KiB
TypeScript

import { DittoConf } from '@ditto/conf';
import { DittoPolyPg } from '@ditto/db';
import { z } from 'zod';
import { DittoPgStore } from '../packages/ditto/storages/DittoPgStore.ts';
import {
updateTrendingEvents,
updateTrendingHashtags,
updateTrendingLinks,
updateTrendingPubkeys,
updateTrendingZappedEvents,
} from '../packages/ditto/trends.ts';
const conf = new DittoConf(Deno.env);
const db = new DittoPolyPg(conf.databaseUrl);
const relay = new DittoPgStore({ db, pubkey: await conf.signer.getPublicKey() });
const ctx = { conf, db, relay };
const trendSchema = z.enum(['pubkeys', 'zapped_events', 'events', 'hashtags', 'links']);
const trends = trendSchema.array().parse(Deno.args);
if (!trends.length) {
trends.push('pubkeys', 'zapped_events', 'events', 'hashtags', 'links');
}
for (const trend of trends) {
switch (trend) {
case 'pubkeys':
console.log('Updating trending pubkeys...');
await updateTrendingPubkeys(ctx);
break;
case 'zapped_events':
console.log('Updating trending zapped events...');
await updateTrendingZappedEvents(ctx);
break;
case 'events':
console.log('Updating trending events...');
await updateTrendingEvents(ctx);
break;
case 'hashtags':
console.log('Updating trending hashtags...');
await updateTrendingHashtags(ctx);
break;
case 'links':
console.log('Updating trending links...');
await updateTrendingLinks(ctx);
break;
}
}
console.log('Trends updated.');
Deno.exit(0);