mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-26 07:44:56 +00:00
29 lines
782 B
TypeScript
29 lines
782 B
TypeScript
import z from "zod"
|
|
import sessionProjectors from "../session/projectors"
|
|
import { SyncEvent } from "@/sync"
|
|
import { Session } from "@/session"
|
|
import { SessionTable } from "@/session/session.sql"
|
|
import { Database, eq } from "@/storage/db"
|
|
|
|
export function initProjectors() {
|
|
SyncEvent.init({
|
|
projectors: sessionProjectors,
|
|
convertEvent: (type, data) => {
|
|
if (type === "session.updated") {
|
|
const id = (data as z.infer<typeof Session.Event.Updated.schema>).sessionID
|
|
const row = Database.use((db) => db.select().from(SessionTable).where(eq(SessionTable.id, id)).get())
|
|
|
|
if (!row) return data
|
|
|
|
return {
|
|
sessionID: id,
|
|
info: Session.fromRow(row),
|
|
}
|
|
}
|
|
return data
|
|
},
|
|
})
|
|
}
|
|
|
|
initProjectors()
|