Skip to content

Commit 684f867

Browse files
committed
Make between config to be flexible
1 parent 64aef42 commit 684f867

File tree

3 files changed

+54
-11
lines changed

3 files changed

+54
-11
lines changed

src/buildWhereClause.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,30 @@ const builder = {
5050
}
5151
},
5252

53+
transformBetweenConfig(config) {
54+
const {start, end, value} = config;
55+
if(start && end) {
56+
return config;
57+
}
58+
const createBetweenCfg = (start, end) => {
59+
return {
60+
field: config.field,
61+
start, end,
62+
};
63+
}
64+
if(value) {
65+
if(value.start && value.end) {
66+
return createBetweenCfg(value.start, value.end);
67+
}
68+
if(Array.isArray(value) && value.length === 2 && !start && !end ) {
69+
return createBetweenCfg(value[0], value[1]);
70+
}
71+
}
72+
return config;
73+
},
74+
5375
between(config, isNot) {
54-
const transformedConfigs = mapObjValues(config, quotifyValue, ['before', 'after']);
76+
const transformedConfigs = mapObjValues(this.transformBetweenConfig(config), quotifyValue, ['start', 'end']);
5577
return templateUtil.applyTemplate(templates.between, transformedConfigs, isNot);
5678
},
5779

src/template/templates.js

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

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

src/test/buildWhereClause.test.js

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -174,14 +174,14 @@ describe('testing buildWhereClause module', () => {
174174
{
175175
operator: 'notBetween',
176176
field: 'b',
177-
before: 15,
178-
after: 19,
177+
start: 15,
178+
end: 19,
179179
},
180180
{
181181
operator: 'BETWEEN',
182182
field: 'c',
183-
before: '1',
184-
after: '2',
183+
start: '1',
184+
end: '2',
185185
}
186186
]
187187
}
@@ -255,8 +255,8 @@ describe('testing buildWhereClause module', () => {
255255
[
256256
{
257257
field: 'A',
258-
before: '2',
259-
after: '5'
258+
start: '2',
259+
end: '5'
260260
},
261261
`
262262
A BETWEEN '2' AND '5'
@@ -265,8 +265,29 @@ describe('testing buildWhereClause module', () => {
265265
[
266266
{
267267
field: 'A',
268-
before: 2,
269-
after: 5
268+
start: 2,
269+
end: 5
270+
},
271+
`
272+
A BETWEEN 2 AND 5
273+
`
274+
],
275+
[
276+
{
277+
field: 'A',
278+
value: [2, 5],
279+
},
280+
`
281+
A BETWEEN 2 AND 5
282+
`
283+
],
284+
[
285+
{
286+
field: 'A',
287+
value: {
288+
start: 2,
289+
end: 5,
290+
},
270291
},
271292
`
272293
A BETWEEN 2 AND 5

0 commit comments

Comments
 (0)