@@ -19,7 +19,7 @@ import type {
1919 SQLiteTransactionConfig ,
2020} from '~/sqlite-core/session.ts' ;
2121import { SQLitePreparedQuery , SQLiteSession } from '~/sqlite-core/session.ts' ;
22- import { mapResultRow } from '~/utils.ts' ;
22+ import { type JitMapper , makeJitQueryMapper } from '~/utils.ts' ;
2323
2424export interface SQLiteD1SessionOptions {
2525 logger ?: Logger ;
@@ -204,6 +204,7 @@ export class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig
204204 >
205205{
206206 static override readonly [ entityKind ] : string = 'D1PreparedQuery' ;
207+ private jitMapper ?: JitMapper < unknown [ ] > ;
207208
208209 /** @internal */
209210 fields ?: SelectedFieldsOrdered ;
@@ -282,13 +283,17 @@ export class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig
282283 return ( this . customResultMapper as ( rows : unknown [ ] [ ] ) => unknown ) ( rows as unknown [ ] [ ] ) ;
283284 }
284285
285- return ( rows as unknown [ ] [ ] ) . map ( ( row ) => mapResultRow ( this . fields ! , row , this . joinsNotNullableMap ) ) ;
286+ return ( this . jitMapper ??= makeJitQueryMapper ( this . fields ! , this . joinsNotNullableMap ) ) (
287+ rows as unknown [ ] [ ] ,
288+ this . fields ! ,
289+ this . joinsNotNullableMap ,
290+ ) ;
286291 }
287292
288293 async get ( placeholderValues ?: Record < string , unknown > ) : Promise < T [ 'get' ] > {
289294 if ( this . isRqbV2Query ) return this . getRqbV2 ( placeholderValues ) ;
290295
291- const { fields, joinsNotNullableMap , query, logger, stmt, customResultMapper } = this ;
296+ const { fields, query, logger, stmt, customResultMapper } = this ;
292297 if ( ! fields && ! customResultMapper ) {
293298 const params = fillPlaceholders ( query . params , placeholderValues ?? { } ) ;
294299 logger . logQuery ( query . sql , params ) ;
@@ -307,7 +312,7 @@ export class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig
307312 return ( customResultMapper as ( rows : unknown [ ] [ ] ) => unknown ) ( rows ) as T [ 'all' ] ;
308313 }
309314
310- return mapResultRow ( fields ! , rows [ 0 ] , joinsNotNullableMap ) ;
315+ return this . mapGetResult ( rows [ 0 ] ) ;
311316 }
312317
313318 private async getRqbV2 ( placeholderValues ?: Record < string , unknown > ) : Promise < T [ 'get' ] > {
@@ -337,7 +342,11 @@ export class D1PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig
337342 return ( this . customResultMapper as ( rows : unknown [ ] [ ] ) => unknown ) ( [ result as unknown [ ] ] ) as T [ 'all' ] ;
338343 }
339344
340- return mapResultRow ( this . fields ! , result as unknown [ ] , this . joinsNotNullableMap ) ;
345+ return ( this . jitMapper ??= makeJitQueryMapper ( this . fields ! , this . joinsNotNullableMap ) ) (
346+ [ result as unknown [ ] ] ,
347+ this . fields ! ,
348+ this . joinsNotNullableMap ,
349+ ) [ 0 ] ;
341350 }
342351
343352 async values < T extends any [ ] = unknown [ ] > ( placeholderValues ?: Record < string , unknown > ) : Promise < T [ ] > {
0 commit comments