@@ -129,42 +129,43 @@ describe("makeQueryTemplate", () => {
129129 assert . deepStrictEqual ( params , [ "val1" ] ) ;
130130 } ) ;
131131
132- it ( "makeQueryTemplate filter list " , ( ) => {
133- const source = { name : "db" , dialect : "postgres" } ;
132+ it ( "makeQueryTemplate filter and escape filters column only once " , ( ) => {
133+ const source = { name : "db" , dialect : "postgres" , escape : ( i ) => `_ ${ i } _` } ;
134134 const operations = {
135135 ...baseOperations ,
136136 filter : [
137137 {
138- type : "in" ,
139- operands : [
140- { type : "column" , value : "col1" } ,
141- { type : "resolved" , value : "val1" } ,
142- { type : "resolved" , value : "val2" } ,
143- { type : "resolved" , value : "val3" }
144- ]
145- } ,
146- {
147- type : "nin" ,
138+ type : "eq" ,
148139 operands : [
149- { type : "column" , value : "col1 " } ,
150- { type : "resolved" , value : "val4 " }
140+ { type : "column" , value : "col2 " } ,
141+ { type : "resolved" , value : "val1 " }
151142 ]
152143 }
153144 ]
154145 } ;
155146
147+ makeQueryTemplate ( operations , source ) ;
156148 const [ parts , ...params ] = makeQueryTemplate ( operations , source ) ;
157- assert . deepStrictEqual ( parts . join ( "?" ) , "SELECT t.col1,t.col2 FROM table1 t\nWHERE t.col1 IN (?,?,?)\nAND t.col1 NOT IN (?)" ) ;
158- assert . deepStrictEqual ( params , [ "val1" , "val2" , "val3" , "val4" ] ) ;
149+ assert . deepStrictEqual (
150+ parts . join ( "?" ) ,
151+ "SELECT t._col1_,t._col2_ FROM table1 t\nWHERE t._col2_ = ?"
152+ ) ;
153+ assert . deepStrictEqual ( params , [ "val1" ] ) ;
159154 } ) ;
160155
161- it ( "makeQueryTemplate throw if filter is missing operands " , ( ) => {
156+ it ( "makeQueryTemplate filter list " , ( ) => {
162157 const source = { name : "db" , dialect : "postgres" } ;
163158 const operations = {
164159 ...baseOperations ,
165160 filter : [
166161 {
167- type : "in"
162+ type : "in" ,
163+ operands : [
164+ { type : "column" , value : "col1" } ,
165+ { type : "resolved" , value : "val1" } ,
166+ { type : "resolved" , value : "val2" } ,
167+ { type : "resolved" , value : "val3" }
168+ ]
168169 } ,
169170 {
170171 type : "nin" ,
@@ -176,9 +177,9 @@ describe("makeQueryTemplate", () => {
176177 ]
177178 } ;
178179
179- assert . throws ( ( ) => {
180- makeQueryTemplate ( operations , source ) ;
181- } , Error ) ;
180+ const [ parts , ... params ] = makeQueryTemplate ( operations , source ) ;
181+ assert . deepStrictEqual ( parts . join ( "?" ) , "SELECT t.col1,t.col2 FROM table1 t\nWHERE t.col1 IN (?,?,?)\nAND t.col1 NOT IN (?)" ) ;
182+ assert . deepStrictEqual ( params , [ "val1" , "val2" , "val3" , "val4" ] ) ;
182183 } ) ;
183184
184185 it ( "makeQueryTemplate select" , ( ) => {
0 commit comments