UNPKG

kysely-bun-worker

Version:
38 lines (35 loc) 1.04 kB
import { parseBigInt } from 'kysely-generic-sqlite'; // src/executor.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: parseBigInt(changes), insertId: 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; } } export { createSqliteExecutor };