File tree 2 files changed +14
-8
lines changed
2 files changed +14
-8
lines changed Original file line number Diff line number Diff line change @@ -18,14 +18,16 @@ export function yql<P extends any[] = unknown[]>(
18
18
let params : Record < string , Value > = Object . assign ( { } , null )
19
19
20
20
if ( Array . isArray ( values ) ) {
21
+ let skip : number = 0
21
22
values . forEach ( ( value , i ) => {
22
23
if ( value [ SymbolUnsafe ] ) {
24
+ skip += 1
23
25
return
24
26
}
25
27
26
28
let ydbValue = isObject ( value ) && 'type' in value && 'kind' in value [ 'type' ] ? value : fromJs ( value )
27
29
28
- params [ `$p${ i } ` ] = ydbValue
30
+ params [ `$p${ i - skip } ` ] = ydbValue
29
31
} )
30
32
}
31
33
@@ -34,10 +36,14 @@ export function yql<P extends any[] = unknown[]>(
34
36
}
35
37
36
38
if ( Array . isArray ( strings ) ) {
39
+ let skip : number = 0
37
40
text += strings . reduce ( ( prev , curr , i ) => {
38
41
let value = values [ i ]
42
+ if ( value && value [ SymbolUnsafe ] ) {
43
+ skip += 1
44
+ }
39
45
40
- return prev + curr + ( value ? value [ SymbolUnsafe ] ? value . toString ( ) : `$p${ i } ` : '' )
46
+ return prev + curr + ( value ? value [ SymbolUnsafe ] ? value . toString ( ) : `$p${ i - skip } ` : '' )
41
47
} , '' )
42
48
}
43
49
Original file line number Diff line number Diff line change 1
1
import { expect , test } from 'vitest'
2
2
3
3
import { Int32 } from '@ydbjs/value/primitive'
4
- import { table , yql } from '../dist/esm/yql.js'
4
+ import { identifier , yql } from '../dist/esm/yql.js'
5
5
6
6
test ( 'string' , ( ) => {
7
7
let { text } = yql `SELECT 1;`
@@ -37,17 +37,17 @@ test('string with ydb value as parameter', () => {
37
37
` )
38
38
} )
39
39
40
- test ( 'string with parameter and unsafe ' , ( ) => {
41
- let { text, params } = yql `FROM ${ table ( 'my_table' ) } SELECT ${ 1 } , ${ 2 } ;`
40
+ test ( 'string with parameters and identifiers ' , ( ) => {
41
+ let { text, params } = yql `FROM ${ identifier ( 'my_table' ) } . ${ identifier ( 'my_column ') } SELECT ${ 1 } , ${ 2 } ;`
42
42
43
- expect ( text ) . eq ( 'FROM `my_table` SELECT $p1 , $p2 ;' )
43
+ expect ( text ) . eq ( 'FROM `my_table`.`my_column` SELECT $p0 , $p1 ;' )
44
44
expect ( params ) . toMatchInlineSnapshot ( `
45
45
{
46
- "$p1 ": Int32 {
46
+ "$p0 ": Int32 {
47
47
"type": Int32Type {},
48
48
"value": 1,
49
49
},
50
- "$p2 ": Int32 {
50
+ "$p1 ": Int32 {
51
51
"type": Int32Type {},
52
52
"value": 2,
53
53
},
You can’t perform that action at this time.
0 commit comments