@@ -126,6 +126,13 @@ export class SQLiteConnection extends SQLConnection {
126
126
super ( connectionPool , logger , transaction , stopwatch ) ;
127
127
this . db = new SQLiteConnection . DatabaseConstructor ( this . dbPath ) ;
128
128
this . db . exec ( 'PRAGMA foreign_keys=ON' ) ;
129
+ this . db . function ( 'regexp' , { deterministic : true } , ( regex , text ) => {
130
+ const splitter = regex . indexOf ( '::' ) ;
131
+ if ( splitter !== - 1 ) {
132
+ return new RegExp ( regex . substring ( splitter + 2 ) , regex . substring ( 0 , splitter ) ) . test ( text ) ? 1 : 0 ;
133
+ }
134
+ return new RegExp ( regex ) . test ( text ) ? 1 : 0 ;
135
+ } ) ;
129
136
}
130
137
131
138
async prepare ( sql : string ) {
@@ -302,7 +309,7 @@ export class SQLitePersistence extends SQLPersistence {
302
309
for ( let i = 0 ; i < changeSets . length ; i ++ ) {
303
310
params . push ( prepared . primaryKeys [ i ] ) ;
304
311
let pkValue = placeholderStrategy . getPlaceholder ( ) ;
305
- valuesValues . push ( '(' + pkValue + ',' + valuesNames . map ( name => {
312
+ valuesValues . push ( '(' + pkValue + ',' + valuesNames . map ( name => {
306
313
params . push ( prepared . values [ name ] [ i ] ) ;
307
314
return placeholderStrategy . getPlaceholder ( ) ;
308
315
} ) . join ( ',' ) + ')' ) ;
@@ -338,21 +345,24 @@ export class SQLitePersistence extends SQLPersistence {
338
345
await connection . exec ( `DROP TABLE IF EXISTS _b` ) ;
339
346
340
347
const sql = `
341
- CREATE TEMPORARY TABLE _b AS
342
- SELECT _.${ prepared . originPkField } , ${ selects . join ( ', ' ) }
343
- FROM (SELECT ${ _rename . join ( ', ' ) } FROM (VALUES ${ valuesValues . join ( ', ' ) } )) as _
344
- INNER JOIN (SELECT ${ _renameSet . join ( ', ' ) } FROM (VALUES ${ valuesSetValues . join ( ', ' ) } )) as _set ON (_.${ prepared . originPkField } = _set.${ prepared . originPkField } )
348
+ CREATE
349
+ TEMPORARY TABLE _b AS
350
+ SELECT _.${ prepared . originPkField } , ${ selects . join ( ', ' ) }
351
+ FROM (SELECT ${ _rename . join ( ', ' ) } FROM (VALUES ${ valuesValues . join ( ', ' ) } )) as _
352
+ INNER JOIN (SELECT ${ _renameSet . join ( ', ' ) } FROM (VALUES ${ valuesSetValues . join ( ', ' ) } )) as _
353
+ set
354
+ ON (_.${ prepared . originPkField } = _ set.${ prepared . originPkField } )
345
355
INNER JOIN ${ prepared . tableName } as _origin ON (_origin.${ prepared . pkField } = _.${ prepared . originPkField } );
346
356
` ;
347
357
348
358
await connection . run ( sql , params ) ;
349
359
350
360
const updateSql = `
351
361
UPDATE
352
- ${ prepared . tableName }
362
+ ${ prepared . tableName }
353
363
SET ${ prepared . setNames . join ( ', ' ) }
354
364
FROM
355
- _b
365
+ _b
356
366
WHERE ${ prepared . tableName } .${ prepared . pkField } = _b.${ prepared . originPkField } ;
357
367
` ;
358
368
await connection . exec ( updateSql ) ;
@@ -414,9 +424,13 @@ export class SQLiteQueryResolver<T extends OrmEntity> extends SQLQueryResolver<T
414
424
415
425
try {
416
426
await connection . exec ( `DROP TABLE IF EXISTS _tmp_d` ) ;
417
- await connection . run ( `CREATE TEMPORARY TABLE _tmp_d as ${ select . sql } ;` , select . params ) ;
427
+ await connection . run ( `CREATE
428
+ TEMPORARY TABLE _tmp_d as
429
+ ${ select . sql } ;` , select . params ) ;
418
430
419
- const sql = `DELETE FROM ${ tableName } WHERE ${ tableName } .${ pkField } IN (SELECT * FROM _tmp_d)` ;
431
+ const sql = `DELETE
432
+ FROM ${ tableName }
433
+ WHERE ${ tableName } .${ pkField } IN (SELECT * FROM _tmp_d)` ;
420
434
await connection . run ( sql ) ;
421
435
const rows = await connection . execAndReturnAll ( 'SELECT * FROM _tmp_d' ) ;
422
436
@@ -509,7 +523,9 @@ export class SQLiteQueryResolver<T extends OrmEntity> extends SQLQueryResolver<T
509
523
try {
510
524
await connection . exec ( `DROP TABLE IF EXISTS _b;` ) ;
511
525
512
- const createBSQL = `CREATE TEMPORARY TABLE _b AS ${ selectSQL . sql } ;` ;
526
+ const createBSQL = `CREATE
527
+ TEMPORARY TABLE _b AS
528
+ ${ selectSQL . sql } ;` ;
513
529
await connection . run ( createBSQL , selectSQL . params ) ;
514
530
515
531
await connection . run ( sql ) ;
0 commit comments