MCPcopy Create free account
hub / github.com/AlexErrant/Pentive / sync

Function sync

app/src/sqlite/crsqlite.ts:126–149  ·  view source on GitHub ↗
(db: crDB)

Source from the content-addressed store, hash-verified

124}
125
126export async function sync(db: crDB): Promise<void> {
127 const siteIdRaw = (
128 await db.execA<[Uint8Array]>('SELECT crsql_siteid();')
129 )[0]![0]
130 const siteId = uuidStringify(siteIdRaw)
131 const dbVersion = (
132 await db.execA<[number]>(`SELECT crsql_dbversion();`)
133 )[0]![0]
134 const poke = await lrpc.poke.query({
135 pokedBy: siteId,
136 pokerVersion: BigInt(dbVersion),
137 })
138 const wdb = await wholeDbReplicator(db)
139 await wdb.onChangesReceived(poke.siteId, poke.changes)
140 if (poke.version != null) {
141 const changeSets = await wdb.onChangesRequested(poke.siteId, poke.version)
142 await lrpc.receiveChanges.mutate({
143 changeSets,
144 fromSiteId: siteId,
145 })
146 } else {
147 C.toastInfo('No changes to push!')
148 }
149}
150
151export function createTx(k: Kysely<DB>, db: crDB) {
152 return async (cb: (k: Kysely<DB>) => Promise<void>) => {

Callers

nothing calls this directly

Calls 3

wholeDbReplicatorFunction · 0.90
onChangesReceivedMethod · 0.80
onChangesRequestedMethod · 0.80

Tested by

no test coverage detected