51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { Jetstream } from "@skyware/jetstream";
|
|
import { deleteNote, upsertNote } from "./src/data/db.ts";
|
|
import { Note } from "./src/data/note.ts";
|
|
|
|
const jetstream = new Jetstream({
|
|
wantedCollections: ["space.litenote.note"],
|
|
});
|
|
|
|
jetstream.onCreate("space.litenote.note", (event) => {
|
|
const { did, commit: { rkey, record } } = event;
|
|
const note = record as unknown as Omit<Note, "did" | "rkey">
|
|
console.log(`[jetstream] create ${did}/${rkey}: ${note.title}`);
|
|
|
|
upsertNote({
|
|
did,
|
|
rkey,
|
|
...note,
|
|
});
|
|
});
|
|
|
|
jetstream.onUpdate("space.litenote.note", (event) => {
|
|
const { did, commit: { rkey, record } } = event;
|
|
const note = record as unknown as Omit<Note, "did" | "rkey">
|
|
console.log(`[jetstream] update ${did}/${rkey}: ${note.title}`);
|
|
|
|
upsertNote({
|
|
did,
|
|
rkey,
|
|
...note,
|
|
});
|
|
});
|
|
|
|
jetstream.onDelete("space.litenote.note", (event) => {
|
|
const { did, commit: { rkey } } = event;
|
|
console.log(`[jetstream] delete ${did}/${rkey}`);
|
|
|
|
deleteNote({ did, rkey });
|
|
});
|
|
|
|
jetstream.on("close", () => {
|
|
console.log("[jetstream] connection closed");
|
|
});
|
|
|
|
jetstream.on("error", (error) => {
|
|
console.log("[jetstream] connection closed with error", error);
|
|
});
|
|
|
|
console.log("[jetstream] launching");
|
|
|
|
jetstream.start();
|