···
import { Client, simpleFetchHandler } from '@atcute/client'
import { findUserPDS, getUserDID } from './id-resolver.ts'
7
-
import { Jetstream } from '@skyware/jetstream'
7
+
import { CommitType, Jetstream } from '@skyware/jetstream'
import { RepoReader } from '@atcute/car/v4'
import { decode } from '@atcute/cbor'
import { logger } from "./lib/logger.ts"
···
logger.info(`Inserting record ${link.rkey}`)
115
-
if (!repoRev || repoRev === null) {
116
-
logger.error('Backfilling error: no last pds revision found')
120
-
if (repoRev != lastRev?.rkey) {
115
+
if (repoRev && repoRev != lastRev?.rkey) {
···
logger.info(`Backfilling ended`)
128
+
async setLastRevision(rkey: string, createdAt: string): Promise<void> {
130
+
.deleteFrom('revs')
134
+
.insertInto('revs')
142
+
async rollbackRevision(): Promise<void> {
143
+
const lastInsert = await db
144
+
.selectFrom('links')
145
+
.select(['rkey', 'createdAt'])
146
+
.orderBy('createdAt', 'desc')
148
+
.executeTakeFirst()
150
+
if (lastInsert !== undefined) {
152
+
.deleteFrom('revs')
156
+
.insertInto('revs')
158
+
rkey: lastInsert.rkey,
159
+
createdAt: lastInsert.createdAt
async jetstream(): Promise<Jetstream> {
const pds = await findUserPDS()
const jetstream = new Jetstream({
138
-
wantedCollections: ['pet.mewsse.link'],
173
+
jetstream.on("commit", async (event) => {
174
+
if (event.commit.operation === CommitType.Create) {
175
+
const date = new Date()
176
+
await this.setLastRevision(event.commit.rev, date.toISOString())
180
+
if (event.commit.operation === CommitType.Delete) {
181
+
await this.rollbackRevision()
jetstream.onCreate('pet.mewsse.link', async (event) => {