@@ -2,7 +2,7 @@ import type { Statement } from 'bun:sqlite'
2
2
import type { MessageHandleFn } from 'kysely-generic-sqlite/worker'
3
3
import type { InitData } from '../type'
4
4
import Database from 'bun:sqlite'
5
- import { buildQueryFn , type IGenericSqlite , parseBigInt , type Promisable } from 'kysely-generic-sqlite'
5
+ import { type IGenericSqlite , parseBigInt , type Promisable } from 'kysely-generic-sqlite'
6
6
import { createWebOnMessageCallback } from 'kysely-generic-sqlite/worker-helper-web'
7
7
8
8
async function * iterateData (
@@ -49,20 +49,25 @@ export function createOnMessageCallback(
49
49
50
50
function createSqliteExecutor ( db : Database , cache : boolean ) : IGenericSqlite < Database > {
51
51
const fn = cache ? 'query' : 'prepare'
52
- const getStmt = ( sql : string ) => db [ fn ] ( sql )
52
+ const getStmt = ( sql : string , parameters ?: any [ ] ) => db [ fn ] ( sql , parameters )
53
53
54
54
return {
55
55
db,
56
- query : buildQueryFn ( {
57
- all : ( sql , parameters ) => getStmt ( sql ) . all ( ...parameters || [ ] ) ,
58
- run : ( sql , parameters ) => {
59
- const { changes, lastInsertRowid } = getStmt ( sql ) . run ( ...parameters || [ ] )
56
+ query : ( _ , sql , parameters ) => {
57
+ const stmt = getStmt ( sql , parameters as any [ ] )
58
+ if ( stmt . columnNames . length > 0 ) {
59
+ return {
60
+ rows : stmt . all ( ) ,
61
+ }
62
+ } else {
63
+ const { changes, lastInsertRowid } = stmt . run ( )
60
64
return {
61
- insertId : parseBigInt ( lastInsertRowid ) ,
62
65
numAffectedRows : parseBigInt ( changes ) ,
66
+ insertId : parseBigInt ( lastInsertRowid ) ,
67
+ rows : [ ] ,
63
68
}
64
- } ,
65
- } ) ,
69
+ }
70
+ } ,
66
71
close : ( ) => db . close ( ) ,
67
72
iterator : ( _ , sql , parameters ) => iterateData ( getStmt ( sql ) , parameters ) ,
68
73
}
0 commit comments