kysely-bun-worker
Version:
kysely dialect for bun:sqlite, running in worker
61 lines (54 loc) • 1.72 kB
JavaScript
;
var Database = require('bun:sqlite');
var kyselyGenericSqlite = require('kysely-generic-sqlite');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var Database__default = /*#__PURE__*/_interopDefault(Database);
// src/normal.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/normal.ts
var BunSqliteDialect = class extends kyselyGenericSqlite.GenericSqliteDialect {
constructor(config) {
const {
url = ":memory:",
cacheStatment = false,
onCreateConnection,
dbOptions = { create: true }
} = config || {};
super(
() => createSqliteExecutor(new Database__default.default(url, dbOptions), cacheStatment),
onCreateConnection
);
}
};
exports.BunSqliteDialect = BunSqliteDialect;