kysely-generic-sqlite
Version:
Generic kysely dialect for SQLite, support run in main thread or worker
50 lines (46 loc) • 1.58 kB
JavaScript
import { BaseSqliteDriver, BaseSqliteDialect } from './chunk-YWE62C55.js';
export { BaseSqliteDialect, BaseSqliteDriver, buildQueryFn, buildQueryFnAlt, parseBigInt } from './chunk-YWE62C55.js';
import { SelectQueryNode } from 'kysely';
var GenericSqliteDriver = class extends BaseSqliteDriver {
db;
constructor(executor, onCreateConnection) {
super(async () => {
this.db = await executor();
this.conn = new GenericSqliteConnection(this.db);
await onCreateConnection?.(this.conn);
});
}
async destroy() {
await this.db?.close();
}
};
var GenericSqliteConnection = class {
constructor(db) {
this.db = db;
}
async *streamQuery({ parameters, query, sql }) {
if (!this.db.iterator) {
throw new Error("streamQuery() is not supported.");
}
const it = this.db.iterator(SelectQueryNode.is(query), sql, parameters);
for await (const row of it) {
yield { rows: [row] };
}
}
async executeQuery({ parameters, query, sql }) {
return await this.db.query(SelectQueryNode.is(query), sql, parameters);
}
};
// src/dialect.ts
var GenericSqliteDialect = class extends BaseSqliteDialect {
/**
* Dialect for generic SQLite that run SQLs in current thread
*
* @param executor function to create {@link IGenericSqlite}
* @param onCreateConnection optional callback after connection created
*/
constructor(executor, onCreateConnection) {
super(() => new GenericSqliteDriver(executor, onCreateConnection));
}
};
export { GenericSqliteConnection, GenericSqliteDialect, GenericSqliteDriver };