ditto/scripts/trends.ts
2025-02-16 23:27:13 -06:00

45 lines
1.3 KiB
TypeScript

import { DittoConf } from '@ditto/conf';
import { z } from 'zod';
import { DittoTrends } from '../packages/ditto/trends.ts';
import { DittoStorages } from '../packages/ditto/DittoStorages.ts';
const trendNameSchema = z.enum(['pubkeys', 'zapped_events', 'events', 'hashtags', 'links']);
const names = trendNameSchema.array().parse(Deno.args);
if (!names.length) {
names.push('pubkeys', 'zapped_events', 'events', 'hashtags', 'links');
}
const conf = new DittoConf(Deno.env);
const storages = new DittoStorages(conf);
const trends = new DittoTrends({ conf, kysely: await storages.kysely(), store: await storages.db() });
for (const name of names) {
switch (name) {
case 'pubkeys':
console.log('Updating trending pubkeys...');
await trends.updateTrendingPubkeys();
break;
case 'zapped_events':
console.log('Updating trending zapped events...');
await trends.updateTrendingZappedEvents();
break;
case 'events':
console.log('Updating trending events...');
await trends.updateTrendingEvents();
break;
case 'hashtags':
console.log('Updating trending hashtags...');
await trends.updateTrendingHashtags();
break;
case 'links':
console.log('Updating trending links...');
await trends.updateTrendingLinks();
break;
}
}
console.log('Trends updated.');
Deno.exit(0);