Scratch space for learning atproto app development
1import type { Database } from "#/db";
2import { Firehose } from "#/firehose/firehose";
3
4export class Ingester {
5 firehose: Firehose | undefined;
6 constructor(public db: Database) {}
7
8 async start() {
9 const firehose = new Firehose({});
10
11 for await (const evt of firehose.run()) {
12 if (evt.event === "create") {
13 if (evt.collection !== "app.bsky.feed.post") continue;
14 const post: any = evt.record; // @TODO fix types
15 await this.db
16 .insertInto("post")
17 .values({
18 uri: evt.uri.toString(),
19 text: post.text as string,
20 indexedAt: new Date().toISOString(),
21 })
22 .execute();
23 }
24 }
25 }
26
27 destroy() {
28 this.firehose?.destroy();
29 }
30}