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 .onConflict((oc) => oc.doNothing())
23 .execute()
24 }
25 }
26 }
27
28 destroy() {
29 this.firehose?.destroy()
30 }
31}