DDRCompanion/lib/db/client.ts
Michael Zhang 10719b6d83
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
got sql working
2024-05-15 20:04:15 -05:00

30 lines
808 B
TypeScript

import type { BindParams, QueryExecResult } from "sql.js";
import { RpcProvider } from "worker-rpc";
import DbWorker from "./db.worker?worker";
const worker = new DbWorker();
const rpcProvider = new RpcProvider((message, transfer) =>
worker.postMessage(message, transfer),
);
worker.onmessage = (e) => rpcProvider.dispatch(e.data);
export async function getDbClient() {
await new Promise<void>((resolve) => {
rpcProvider.registerSignalHandler("ready", () => {
resolve();
});
});
return {
async run(s: string, p?: BindParams[]) {
return await rpcProvider.rpc("run", { s, p });
},
async exec(s: string, p?: BindParams[]): Promise<QueryExecResult[]> {
return await rpcProvider.rpc("exec", { s, p });
},
};
}
export const dbClient = await getDbClient();