Skip to content

Commit 2b15f98

Browse files
committed
Adding support for notDateBetween and wrapped between clause in round brackets
1 parent 9c3b774 commit 2b15f98

File tree

5 files changed

+88
-15
lines changed

5 files changed

+88
-15
lines changed

src/buildWhereClause.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ const builder = {
100100
return this.between(config, true);
101101
},
102102

103+
notdateBetween(config) {
104+
return this.dateBetween(config, true);
105+
},
106+
103107
notlike(config) {
104108
return this.like(config, true);
105109
},

src/template/templates.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export default {
22
between({field, start, end, notOperator}) {
3-
return `${field} ${notOperator} BETWEEN ${start} AND ${end}`;
3+
return `${field} ${notOperator} BETWEEN ( ${start} AND ${end} )`;
44
},
55

66
is({field, value, notOperator}) {

src/test/buildWhereClause.test.js

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@ describe('testing buildWhereClause module', () => {
196196
b IS NOT null AND
197197
c NOT IN ('1', '2') AND
198198
(
199-
b NOT BETWEEN 15 AND 19 AND
200-
c BETWEEN '1' AND '2'
199+
b NOT BETWEEN ( 15 AND 19 ) AND
200+
c BETWEEN ( '1' AND '2' )
201201
)
202202
)
203203
`
@@ -248,10 +248,19 @@ describe('testing buildWhereClause module', () => {
248248
start: new Date(1975, 0, 1),
249249
end: new Date(1999, 11, 31),
250250
}
251+
},
252+
{
253+
operator: 'notDateBetween',
254+
field: 'birth',
255+
value: {
256+
start: new Date(1975, 0, 1),
257+
end: new Date(1999, 11, 31),
258+
}
251259
}
252260
],
253261
`
254-
birth BETWEEN '1975-01-01' AND '1999-12-31'
262+
birth BETWEEN ( '1975-01-01' AND '1999-12-31' )
263+
AND birth NOT BETWEEN ( '1975-01-01' AND '1999-12-31' )
255264
`
256265
],
257266
])('testing with each utility', (received, expected) => {
@@ -274,7 +283,7 @@ describe('testing buildWhereClause module', () => {
274283
end: '5'
275284
},
276285
`
277-
A BETWEEN '2' AND '5'
286+
A BETWEEN ( '2' AND '5' )
278287
`
279288
],
280289
[
@@ -284,7 +293,7 @@ describe('testing buildWhereClause module', () => {
284293
end: 5
285294
},
286295
`
287-
A BETWEEN 2 AND 5
296+
A BETWEEN ( 2 AND 5 )
288297
`
289298
],
290299
[
@@ -293,7 +302,7 @@ describe('testing buildWhereClause module', () => {
293302
value: [2, 5],
294303
},
295304
`
296-
A BETWEEN 2 AND 5
305+
A BETWEEN ( 2 AND 5 )
297306
`
298307
],
299308
[
@@ -305,7 +314,7 @@ describe('testing buildWhereClause module', () => {
305314
},
306315
},
307316
`
308-
A BETWEEN 2 AND 5
317+
A BETWEEN ( 2 AND 5 )
309318
`
310319
]
311320
])('testing between module', (received, expected) => {
@@ -320,7 +329,7 @@ describe('testing buildWhereClause module', () => {
320329
end: new Date(2019, 10, 30)
321330
},
322331
`
323-
A BETWEEN '2019-11-15' AND '2019-11-30'
332+
A BETWEEN ( '2019-11-15' AND '2019-11-30' )
324333
`
325334
],
326335
[
@@ -332,7 +341,7 @@ describe('testing buildWhereClause module', () => {
332341
}
333342
},
334343
`
335-
A BETWEEN '2019-11-15' AND '2019-11-30'
344+
A BETWEEN ( '2019-11-15' AND '2019-11-30' )
336345
`
337346
],
338347

@@ -342,7 +351,7 @@ describe('testing buildWhereClause module', () => {
342351
value: [ new Date(2019, 10, 15), new Date(2019, 10, 30) ]
343352
},
344353
`
345-
A BETWEEN '2019-11-15' AND '2019-11-30'
354+
A BETWEEN ( '2019-11-15' AND '2019-11-30' )
346355
`
347356
],
348357
[
@@ -353,7 +362,7 @@ describe('testing buildWhereClause module', () => {
353362
format: 'MM-yyyy-dd',
354363
},
355364
`
356-
A BETWEEN '11-2019-15' AND '11-2019-30'
365+
A BETWEEN ( '11-2019-15' AND '11-2019-30' )
357366
`
358367
],
359368
[
@@ -366,7 +375,7 @@ describe('testing buildWhereClause module', () => {
366375
}
367376
},
368377
`
369-
A BETWEEN '11-2019-15' AND '11-2019-30'
378+
A BETWEEN ( '11-2019-15' AND '11-2019-30' )
370379
`
371380
],
372381

@@ -377,7 +386,7 @@ describe('testing buildWhereClause module', () => {
377386
value: [ new Date(2019, 10, 15), new Date(2019, 10, 30) ]
378387
},
379388
`
380-
A BETWEEN '11-2019-15' AND '11-2019-30'
389+
A BETWEEN ( '11-2019-15' AND '11-2019-30' )
381390
`
382391
],
383392
])('Testing DateBetween operator', (received, expected) => {

src/test/functionAliasMap.test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import functionAliasMap from '../funtionAliasMap'
22

33
describe('testing functionAliasMap module', () => {
44
it('should return alias map', () => {
5-
console.log(functionAliasMap)
65
expect(functionAliasMap).toEqual({
76
equal: [ 'in', 'eq', 'is', 'equal', '=' ],
87
notequal: [ 'notin', 'noteq', 'notis', 'notequal', '!=', '<>' ],

src/test/index.test.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,67 @@ describe('testing json2sql module', () => {
143143
some random text at end
144144
`,
145145
],
146+
[
147+
{
148+
fields: ['A', 'B'],
149+
aggregate: [
150+
{
151+
fn: 'count',
152+
args: 'D',
153+
alias: 'CNT'
154+
}
155+
],
156+
from: 'STUDENTS',
157+
where: [
158+
{
159+
operator: 'equal',
160+
field: 'NAME',
161+
value: 'Piyush'
162+
},
163+
{
164+
operator: '=',
165+
field: 'ROLL',
166+
value: [13],
167+
},
168+
{
169+
operator: 'OR',
170+
conditions: [
171+
{
172+
operator: 'equal',
173+
field: 'A',
174+
value: 5,
175+
},
176+
{
177+
operator: 'equal',
178+
field: 'A',
179+
value: 10,
180+
}
181+
]
182+
},
183+
{
184+
operator: 'dateBetween',
185+
field: 'BIRTH',
186+
value: {
187+
start: new Date(1975, 0, 1),
188+
end: new Date(1999, 11, 31),
189+
}
190+
},
191+
],
192+
groupBy: ['A', 'B', 'C'],
193+
orderBy: ['A'],
194+
misc: [
195+
"EXTERNAL NAME 'TestFuncs$MyMath.pow'"
196+
],
197+
},
198+
`
199+
SELECT A, B, count(D) AS CNT FROM STUDENTS
200+
WHERE NAME = 'Piyush' AND ROLL = 13 AND (A = 5 OR A = 10) AND
201+
BIRTH BETWEEN ( '1975-01-01' AND '1999-12-31' )
202+
GROUP BY A, B, C
203+
ORDER BY A
204+
EXTERNAL NAME 'TestFuncs$MyMath.pow'
205+
`
206+
]
146207

147208

148209
])('testing using it.each', (received, expected) => {

0 commit comments

Comments
 (0)