UNPKG

kysely-bun-worker

Version:
59 lines (52 loc) 1.79 kB
'use strict'; var Database = require('bun:sqlite'); var workerHelperWeb = require('kysely-generic-sqlite/worker-helper-web'); var kyselyGenericSqlite = require('kysely-generic-sqlite'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var Database__default = /*#__PURE__*/_interopDefault(Database); // src/worker/utils.ts function createSqliteExecutor(db, cache) { const fn = cache ? "query" : "prepare"; const getStmt = (sql, parameters) => db[fn](sql, parameters); return { db, query: (_, sql, parameters) => { const stmt = getStmt(sql, parameters); if (stmt.columnNames.length > 0) { return { rows: stmt.all() }; } else { const { changes, lastInsertRowid } = stmt.run(); return { numAffectedRows: kyselyGenericSqlite.parseBigInt(changes), insertId: kyselyGenericSqlite.parseBigInt(lastInsertRowid), rows: [] }; } }, close: () => db.close(), iterator: (_, sql, parameters) => iterateData(getStmt(sql), parameters) }; } async function* iterateData(stmt, parameters) { if (!("iterate" in stmt)) { throw new Error("Streaming not supported, please upgrade to Bun@1.1.31 or later"); } for (const row of stmt.iterate(...parameters || [])) { yield row; } } // src/worker/utils.ts var defaultCreateDatabaseFn = (fileName, opt) => new Database__default.default(fileName, opt); function createOnMessageCallback(create, message) { workerHelperWeb.createWebOnMessageCallback( async ({ cache, fileName, opt }) => { const db = await create(fileName, opt); return createSqliteExecutor(db, cache); }, message ); } // src/worker/index.ts createOnMessageCallback(defaultCreateDatabaseFn);