mirror of
https://github.com/aljazceru/ditto.git
synced 2026-01-05 22:54:25 +01:00
Refactor EventStore to use a more Set-like interface
This commit is contained in:
@@ -134,7 +134,7 @@ const accountStatusesController: AppController = async (c) => {
|
||||
const { pinned, limit, exclude_replies, tagged } = accountStatusesQuerySchema.parse(c.req.query());
|
||||
|
||||
if (pinned) {
|
||||
const [pinEvent] = await eventsDB.getEvents([{ kinds: [10001], authors: [pubkey], limit: 1 }]);
|
||||
const [pinEvent] = await eventsDB.filter([{ kinds: [10001], authors: [pubkey], limit: 1 }]);
|
||||
if (pinEvent) {
|
||||
const pinnedEventIds = getTagSet(pinEvent.tags, 'e');
|
||||
return renderStatuses(c, [...pinnedEventIds].reverse());
|
||||
@@ -156,7 +156,7 @@ const accountStatusesController: AppController = async (c) => {
|
||||
filter['#t'] = [tagged];
|
||||
}
|
||||
|
||||
let events = await eventsDB.getEvents([filter]);
|
||||
let events = await eventsDB.filter([filter]);
|
||||
|
||||
if (exclude_replies) {
|
||||
events = events.filter((event) => !findReplyTag(event));
|
||||
@@ -293,7 +293,7 @@ const favouritesController: AppController = async (c) => {
|
||||
const pubkey = c.get('pubkey')!;
|
||||
const params = paginationSchema.parse(c.req.query());
|
||||
|
||||
const events7 = await eventsDB.getEvents(
|
||||
const events7 = await eventsDB.filter(
|
||||
[{ kinds: [7], authors: [pubkey], ...params }],
|
||||
{ signal: AbortSignal.timeout(1000) },
|
||||
);
|
||||
@@ -302,7 +302,7 @@ const favouritesController: AppController = async (c) => {
|
||||
.map((event) => event.tags.find((tag) => tag[0] === 'e')?.[1])
|
||||
.filter((id): id is string => !!id);
|
||||
|
||||
const events1 = await eventsDB.getEvents(
|
||||
const events1 = await eventsDB.filter(
|
||||
[{ kinds: [1], ids, relations: ['author', 'event_stats', 'author_stats'] }],
|
||||
{
|
||||
signal: AbortSignal.timeout(1000),
|
||||
|
||||
@@ -39,9 +39,9 @@ const adminAccountsController: AppController = async (c) => {
|
||||
|
||||
const { since, until, limit } = paginationSchema.parse(c.req.query());
|
||||
|
||||
const events = await eventsDB.getEvents([{ kinds: [30361], authors: [Conf.pubkey], since, until, limit }]);
|
||||
const events = await eventsDB.filter([{ kinds: [30361], authors: [Conf.pubkey], since, until, limit }]);
|
||||
const pubkeys = events.map((event) => event.tags.find(([name]) => name === 'd')?.[1]!);
|
||||
const authors = await eventsDB.getEvents([{ kinds: [0], authors: pubkeys }]);
|
||||
const authors = await eventsDB.filter([{ kinds: [0], authors: pubkeys }]);
|
||||
|
||||
for (const event of events) {
|
||||
const d = event.tags.find(([name]) => name === 'd')?.[1];
|
||||
|
||||
@@ -7,7 +7,7 @@ import { renderAccounts } from '@/views.ts';
|
||||
const blocksController: AppController = async (c) => {
|
||||
const pubkey = c.get('pubkey')!;
|
||||
|
||||
const [event10000] = await eventsDB.getEvents([
|
||||
const [event10000] = await eventsDB.filter([
|
||||
{ kinds: [10000], authors: [pubkey], limit: 1 },
|
||||
]);
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import { renderStatuses } from '@/views.ts';
|
||||
const bookmarksController: AppController = async (c) => {
|
||||
const pubkey = c.get('pubkey')!;
|
||||
|
||||
const [event10003] = await eventsDB.getEvents([
|
||||
const [event10003] = await eventsDB.filter([
|
||||
{ kinds: [10003], authors: [pubkey], limit: 1 },
|
||||
]);
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ const notificationsController: AppController = async (c) => {
|
||||
const pubkey = c.get('pubkey')!;
|
||||
const { since, until } = paginationSchema.parse(c.req.query());
|
||||
|
||||
const events = await eventsDB.getEvents(
|
||||
const events = await eventsDB.filter(
|
||||
[{ kinds: [1], '#p': [pubkey], since, until }],
|
||||
{ signal: AbortSignal.timeout(3000) },
|
||||
);
|
||||
|
||||
@@ -6,7 +6,7 @@ import { createAdminEvent } from '@/utils/api.ts';
|
||||
import { Conf } from '@/config.ts';
|
||||
|
||||
const frontendConfigController: AppController = async (c) => {
|
||||
const [event] = await eventsDB.getEvents([{
|
||||
const [event] = await eventsDB.filter([{
|
||||
kinds: [30078],
|
||||
authors: [Conf.pubkey],
|
||||
'#d': ['pub.ditto.frontendConfig'],
|
||||
|
||||
@@ -78,7 +78,7 @@ function searchEvents({ q, type, limit, account_id }: SearchQuery, signal: Abort
|
||||
filter.authors = [account_id];
|
||||
}
|
||||
|
||||
return searchStore.getEvents([filter], { signal });
|
||||
return searchStore.filter([filter], { signal });
|
||||
}
|
||||
|
||||
/** Get event kinds to search from `type` query param. */
|
||||
@@ -96,7 +96,7 @@ function typeToKinds(type: SearchQuery['type']): number[] {
|
||||
/** Resolve a searched value into an event, if applicable. */
|
||||
async function lookupEvent(query: SearchQuery, signal: AbortSignal): Promise<Event | undefined> {
|
||||
const filters = await getLookupFilters(query);
|
||||
const [event] = await searchStore.getEvents(filters, { limit: 1, signal });
|
||||
const [event] = await searchStore.filter(filters, { limit: 1, signal });
|
||||
return event;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ const hashtagTimelineController: AppController = (c) => {
|
||||
|
||||
/** Render statuses for timelines. */
|
||||
async function renderStatuses(c: AppContext, filters: DittoFilter<1>[], signal = AbortSignal.timeout(1000)) {
|
||||
const events = await eventsDB.getEvents(
|
||||
const events = await eventsDB.filter(
|
||||
filters.map((filter) => ({ ...filter, relations: ['author', 'event_stats', 'author_stats'] })),
|
||||
{ signal },
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user