UNPKG

kysely-generic-sqlite

Version:
50 lines (46 loc) 1.58 kB
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 };