(db: crDB)
| 124 | } |
| 125 | |
| 126 | export 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 | |
| 151 | export function createTx(k: Kysely<DB>, db: crDB) { |
| 152 | return async (cb: (k: Kysely<DB>) => Promise<void>) => { |
nothing calls this directly
no test coverage detected