forked from andyburke/autonomous.contact
feature: watches on the backend, need frontend implementation for
notifications and unread indicators
This commit is contained in:
parent
7046bb0389
commit
6293374bb7
28 changed files with 1405 additions and 608 deletions
|
|
@ -5,7 +5,7 @@ import * as CANNED_RESPONSES from '../../../../../utils/canned_responses.ts';
|
|||
import { EVENT, get_events_collection_for_topic, VALIDATE_EVENT } from '../../../../../models/event.ts';
|
||||
import parse_body from '../../../../../utils/bodyparser.ts';
|
||||
import { FSDB_COLLECTION, FSDB_SEARCH_OPTIONS, WALK_ENTRY } from '@andyburke/fsdb';
|
||||
import * as path from '@std/path';
|
||||
import { WATCH, WATCHES } from '../../../../../models/watch.ts';
|
||||
|
||||
export const PRECHECKS: PRECHECK_TABLE = {};
|
||||
|
||||
|
|
@ -58,11 +58,9 @@ export async function GET(request: Request, meta: Record<string, any>): Promise<
|
|||
sort,
|
||||
filter: (entry: WALK_ENTRY<EVENT>) => {
|
||||
const {
|
||||
groups: {
|
||||
event_type,
|
||||
event_id
|
||||
}
|
||||
} = /^.*\/events\/(?<event_type>.*?)\/.*\/(?<event_id>[A-Za-z-]+)\.json$/.exec(entry.path) ?? { groups: {} };
|
||||
event_type,
|
||||
event_id
|
||||
} = /^.*\/events\/(?<event_type>.*?)\/.*\/(?<event_id>[A-Za-z-]+)\.json$/.exec(entry.path)?.groups ?? {};
|
||||
|
||||
if (meta.query.after_id && event_id <= meta.query.after_id) {
|
||||
return false;
|
||||
|
|
@ -136,6 +134,26 @@ export async function GET(request: Request, meta: Record<string, any>): Promise<
|
|||
});
|
||||
}
|
||||
|
||||
async function update_watches(topic: TOPIC, event: EVENT) {
|
||||
const limit = 100;
|
||||
|
||||
let more_to_process;
|
||||
let offset = 0;
|
||||
do {
|
||||
const watches: WATCH[] = (await WATCHES.find({
|
||||
topic_id: topic.id
|
||||
}, {
|
||||
limit,
|
||||
offset
|
||||
})).map((entry) => entry.load());
|
||||
|
||||
// TODO: look at the watch .types[] and send notifications
|
||||
|
||||
offset += watches.length;
|
||||
more_to_process = watches.length === limit;
|
||||
} while (more_to_process);
|
||||
}
|
||||
|
||||
// POST /api/topics/:topic_id/events - Create an event
|
||||
PRECHECKS.POST = [get_session, get_user, require_user, async (_req: Request, meta: Record<string, any>): Promise<Response | undefined> => {
|
||||
const topic_id: string = meta.params?.topic_id?.toLowerCase().trim() ?? '';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue