rawsql-ts 0.10.3-beta → 0.10.4-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -17
- package/dist/esm/index.min.js +11 -11
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/transformers/SqlParamInjector.js +301 -17
- package/dist/esm/transformers/SqlParamInjector.js.map +1 -1
- package/dist/esm/types/transformers/SqlParamInjector.d.ts +11 -1
- package/dist/index.min.js +11 -11
- package/dist/index.min.js.map +3 -3
- package/dist/transformers/SqlParamInjector.d.ts +11 -1
- package/dist/transformers/SqlParamInjector.js +301 -17
- package/dist/transformers/SqlParamInjector.js.map +1 -1
- package/package.json +1 -1
@@ -34,11 +34,82 @@ export class SqlParamInjector {
|
|
34
34
|
const collector = new SelectableColumnCollector(this.tableColumnResolver);
|
35
35
|
// Normalization is handled locally below.
|
36
36
|
const normalize = (s) => this.options.ignoreCaseAndUnderscore ? s.toLowerCase().replace(/_/g, '') : s;
|
37
|
-
const allowedOps = ['min', 'max', 'like', 'in', 'any', '=', '<', '>', '!=', '<>', '<=', '>='];
|
37
|
+
const allowedOps = ['min', 'max', 'like', 'ilike', 'in', 'any', '=', '<', '>', '!=', '<>', '<=', '>=', 'or', 'and', 'column'];
|
38
38
|
for (const [name, stateValue] of Object.entries(state)) {
|
39
39
|
// skip undefined values
|
40
40
|
if (stateValue === undefined)
|
41
41
|
continue;
|
42
|
+
// Handle OR conditions specially - they don't need the main column to exist
|
43
|
+
if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && 'or' in stateValue) {
|
44
|
+
const orConditions = stateValue.or;
|
45
|
+
if (orConditions && orConditions.length > 0) {
|
46
|
+
// For OR conditions, we need to find a query that contains any of the referenced columns
|
47
|
+
const referencedColumns = orConditions
|
48
|
+
.map(cond => cond.column || name)
|
49
|
+
.filter((col, index, arr) => arr.indexOf(col) === index); // unique columns
|
50
|
+
let targetQuery = null;
|
51
|
+
for (const colName of referencedColumns) {
|
52
|
+
const queries = finder.find(query, colName);
|
53
|
+
if (queries.length > 0) {
|
54
|
+
targetQuery = queries[0];
|
55
|
+
break;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
if (!targetQuery) {
|
59
|
+
throw new Error(`None of the OR condition columns [${referencedColumns.join(', ')}] found in query`);
|
60
|
+
}
|
61
|
+
const columns = collector.collect(targetQuery);
|
62
|
+
injectOrConditions(targetQuery, name, orConditions, normalize, columns, collector);
|
63
|
+
continue;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
// Handle AND conditions specially - they don't need the main column to exist
|
67
|
+
if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && 'and' in stateValue) {
|
68
|
+
const andConditions = stateValue.and;
|
69
|
+
if (andConditions && andConditions.length > 0) {
|
70
|
+
// For AND conditions, we need to find a query that contains any of the referenced columns
|
71
|
+
const referencedColumns = andConditions
|
72
|
+
.map(cond => cond.column || name)
|
73
|
+
.filter((col, index, arr) => arr.indexOf(col) === index); // unique columns
|
74
|
+
let targetQuery = null;
|
75
|
+
for (const colName of referencedColumns) {
|
76
|
+
const queries = finder.find(query, colName);
|
77
|
+
if (queries.length > 0) {
|
78
|
+
targetQuery = queries[0];
|
79
|
+
break;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
if (!targetQuery) {
|
83
|
+
throw new Error(`None of the AND condition columns [${referencedColumns.join(', ')}] found in query`);
|
84
|
+
}
|
85
|
+
const columns = collector.collect(targetQuery);
|
86
|
+
injectAndConditions(targetQuery, name, andConditions, normalize, columns, collector);
|
87
|
+
continue;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
// Handle explicit column mapping without OR
|
91
|
+
if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && 'column' in stateValue && !('or' in stateValue)) {
|
92
|
+
const explicitColumnName = stateValue.column;
|
93
|
+
if (explicitColumnName) {
|
94
|
+
const queries = finder.find(query, explicitColumnName);
|
95
|
+
if (queries.length === 0) {
|
96
|
+
throw new Error(`Explicit column '${explicitColumnName}' not found in query`);
|
97
|
+
}
|
98
|
+
for (const q of queries) {
|
99
|
+
const columns = collector.collect(q);
|
100
|
+
const entry = columns.find(item => normalize(item.name) === normalize(explicitColumnName));
|
101
|
+
if (!entry) {
|
102
|
+
throw new Error(`Explicit column '${explicitColumnName}' not found in query`);
|
103
|
+
}
|
104
|
+
// if object, validate its keys
|
105
|
+
if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && Object.getPrototypeOf(stateValue) === Object.prototype) {
|
106
|
+
validateOperators(stateValue, allowedOps, name);
|
107
|
+
}
|
108
|
+
injectComplexConditions(q, entry.value, name, stateValue);
|
109
|
+
}
|
110
|
+
continue;
|
111
|
+
}
|
112
|
+
}
|
42
113
|
const queries = finder.find(query, name);
|
43
114
|
if (queries.length === 0) {
|
44
115
|
throw new Error(`Column '${name}' not found in query`);
|
@@ -49,22 +120,217 @@ export class SqlParamInjector {
|
|
49
120
|
if (!entry) {
|
50
121
|
throw new Error(`Column '${name}' not found in query`);
|
51
122
|
}
|
52
|
-
const columnRef = entry.value;
|
53
|
-
// if object, validate its keys
|
123
|
+
const columnRef = entry.value; // if object, validate its keys
|
54
124
|
if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && Object.getPrototypeOf(stateValue) === Object.prototype) {
|
55
125
|
validateOperators(stateValue, allowedOps, name);
|
56
126
|
}
|
127
|
+
// Handle explicit column mapping
|
128
|
+
let targetColumn = columnRef;
|
129
|
+
let targetColumnName = name;
|
130
|
+
if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && 'column' in stateValue) {
|
131
|
+
const explicitColumnName = stateValue.column;
|
132
|
+
if (explicitColumnName) {
|
133
|
+
const explicitEntry = columns.find(item => normalize(item.name) === normalize(explicitColumnName));
|
134
|
+
if (explicitEntry) {
|
135
|
+
targetColumn = explicitEntry.value;
|
136
|
+
targetColumnName = explicitColumnName;
|
137
|
+
}
|
138
|
+
}
|
139
|
+
}
|
57
140
|
if (stateValue === null ||
|
58
141
|
typeof stateValue !== 'object' ||
|
59
142
|
Array.isArray(stateValue) ||
|
60
143
|
stateValue instanceof Date) {
|
61
|
-
injectSimpleCondition(q,
|
144
|
+
injectSimpleCondition(q, targetColumn, targetColumnName, stateValue);
|
62
145
|
}
|
63
146
|
else {
|
64
|
-
injectComplexConditions(q,
|
147
|
+
injectComplexConditions(q, targetColumn, targetColumnName, stateValue);
|
148
|
+
}
|
149
|
+
}
|
150
|
+
}
|
151
|
+
function injectAndConditions(q, baseName, andConditions, normalize, availableColumns, collector) {
|
152
|
+
// For AND conditions, we process each condition and add them all with AND logic
|
153
|
+
for (let i = 0; i < andConditions.length; i++) {
|
154
|
+
const andCondition = andConditions[i];
|
155
|
+
const columnName = andCondition.column || baseName;
|
156
|
+
// Find the target column
|
157
|
+
const entry = availableColumns.find(item => normalize(item.name) === normalize(columnName));
|
158
|
+
if (!entry) {
|
159
|
+
throw new Error(`Column '${columnName}' not found in query for AND condition`);
|
160
|
+
}
|
161
|
+
const columnRef = entry.value;
|
162
|
+
// Process each operator in the AND condition
|
163
|
+
if ('=' in andCondition && andCondition['='] !== undefined) {
|
164
|
+
const paramName = `${baseName}_and_${i}_eq`;
|
165
|
+
const paramExpr = new ParameterExpression(paramName, andCondition['=']);
|
166
|
+
q.appendWhere(new BinaryExpression(columnRef, "=", paramExpr));
|
167
|
+
}
|
168
|
+
if ('min' in andCondition && andCondition.min !== undefined) {
|
169
|
+
const paramName = `${baseName}_and_${i}_min`;
|
170
|
+
const paramExpr = new ParameterExpression(paramName, andCondition.min);
|
171
|
+
q.appendWhere(new BinaryExpression(columnRef, ">=", paramExpr));
|
172
|
+
}
|
173
|
+
if ('max' in andCondition && andCondition.max !== undefined) {
|
174
|
+
const paramName = `${baseName}_and_${i}_max`;
|
175
|
+
const paramExpr = new ParameterExpression(paramName, andCondition.max);
|
176
|
+
q.appendWhere(new BinaryExpression(columnRef, "<=", paramExpr));
|
177
|
+
}
|
178
|
+
if ('like' in andCondition && andCondition.like !== undefined) {
|
179
|
+
const paramName = `${baseName}_and_${i}_like`;
|
180
|
+
const paramExpr = new ParameterExpression(paramName, andCondition.like);
|
181
|
+
q.appendWhere(new BinaryExpression(columnRef, "like", paramExpr));
|
182
|
+
}
|
183
|
+
if ('ilike' in andCondition && andCondition.ilike !== undefined) {
|
184
|
+
const paramName = `${baseName}_and_${i}_ilike`;
|
185
|
+
const paramExpr = new ParameterExpression(paramName, andCondition.ilike);
|
186
|
+
q.appendWhere(new BinaryExpression(columnRef, "ilike", paramExpr));
|
187
|
+
}
|
188
|
+
if ('in' in andCondition && andCondition.in !== undefined) {
|
189
|
+
const arr = andCondition.in;
|
190
|
+
const prms = arr.map((v, j) => new ParameterExpression(`${baseName}_and_${i}_in_${j}`, v));
|
191
|
+
q.appendWhere(new BinaryExpression(columnRef, "in", new ParenExpression(new ValueList(prms))));
|
192
|
+
}
|
193
|
+
if ('any' in andCondition && andCondition.any !== undefined) {
|
194
|
+
const paramName = `${baseName}_and_${i}_any`;
|
195
|
+
const paramExpr = new ParameterExpression(paramName, andCondition.any);
|
196
|
+
q.appendWhere(new BinaryExpression(columnRef, "=", new FunctionCall(null, "any", paramExpr, null)));
|
197
|
+
}
|
198
|
+
if ('<' in andCondition && andCondition['<'] !== undefined) {
|
199
|
+
const paramName = `${baseName}_and_${i}_lt`;
|
200
|
+
const paramExpr = new ParameterExpression(paramName, andCondition['<']);
|
201
|
+
q.appendWhere(new BinaryExpression(columnRef, "<", paramExpr));
|
202
|
+
}
|
203
|
+
if ('>' in andCondition && andCondition['>'] !== undefined) {
|
204
|
+
const paramName = `${baseName}_and_${i}_gt`;
|
205
|
+
const paramExpr = new ParameterExpression(paramName, andCondition['>']);
|
206
|
+
q.appendWhere(new BinaryExpression(columnRef, ">", paramExpr));
|
207
|
+
}
|
208
|
+
if ('!=' in andCondition && andCondition['!='] !== undefined) {
|
209
|
+
const paramName = `${baseName}_and_${i}_neq`;
|
210
|
+
const paramExpr = new ParameterExpression(paramName, andCondition['!=']);
|
211
|
+
q.appendWhere(new BinaryExpression(columnRef, "!=", paramExpr));
|
212
|
+
}
|
213
|
+
if ('<>' in andCondition && andCondition['<>'] !== undefined) {
|
214
|
+
const paramName = `${baseName}_and_${i}_ne`;
|
215
|
+
const paramExpr = new ParameterExpression(paramName, andCondition['<>']);
|
216
|
+
q.appendWhere(new BinaryExpression(columnRef, "<>", paramExpr));
|
217
|
+
}
|
218
|
+
if ('<=' in andCondition && andCondition['<='] !== undefined) {
|
219
|
+
const paramName = `${baseName}_and_${i}_le`;
|
220
|
+
const paramExpr = new ParameterExpression(paramName, andCondition['<=']);
|
221
|
+
q.appendWhere(new BinaryExpression(columnRef, "<=", paramExpr));
|
222
|
+
}
|
223
|
+
if ('>=' in andCondition && andCondition['>='] !== undefined) {
|
224
|
+
const paramName = `${baseName}_and_${i}_ge`;
|
225
|
+
const paramExpr = new ParameterExpression(paramName, andCondition['>=']);
|
226
|
+
q.appendWhere(new BinaryExpression(columnRef, ">=", paramExpr));
|
65
227
|
}
|
66
228
|
}
|
67
229
|
}
|
230
|
+
function injectOrConditions(q, baseName, orConditions, normalize, availableColumns, collector) {
|
231
|
+
const orExpressions = [];
|
232
|
+
for (let i = 0; i < orConditions.length; i++) {
|
233
|
+
const orCondition = orConditions[i];
|
234
|
+
const columnName = orCondition.column || baseName;
|
235
|
+
// Find the target column
|
236
|
+
const entry = availableColumns.find(item => normalize(item.name) === normalize(columnName));
|
237
|
+
if (!entry) {
|
238
|
+
throw new Error(`Column '${columnName}' not found in query for OR condition`);
|
239
|
+
}
|
240
|
+
const columnRef = entry.value;
|
241
|
+
// Create conditions for this OR branch
|
242
|
+
const branchConditions = [];
|
243
|
+
// Process each operator in the OR condition
|
244
|
+
if ('=' in orCondition && orCondition['='] !== undefined) {
|
245
|
+
const paramName = `${baseName}_or_${i}_eq`;
|
246
|
+
const paramExpr = new ParameterExpression(paramName, orCondition['=']);
|
247
|
+
branchConditions.push(new BinaryExpression(columnRef, "=", paramExpr));
|
248
|
+
}
|
249
|
+
if ('min' in orCondition && orCondition.min !== undefined) {
|
250
|
+
const paramName = `${baseName}_or_${i}_min`;
|
251
|
+
const paramExpr = new ParameterExpression(paramName, orCondition.min);
|
252
|
+
branchConditions.push(new BinaryExpression(columnRef, ">=", paramExpr));
|
253
|
+
}
|
254
|
+
if ('max' in orCondition && orCondition.max !== undefined) {
|
255
|
+
const paramName = `${baseName}_or_${i}_max`;
|
256
|
+
const paramExpr = new ParameterExpression(paramName, orCondition.max);
|
257
|
+
branchConditions.push(new BinaryExpression(columnRef, "<=", paramExpr));
|
258
|
+
}
|
259
|
+
if ('like' in orCondition && orCondition.like !== undefined) {
|
260
|
+
const paramName = `${baseName}_or_${i}_like`;
|
261
|
+
const paramExpr = new ParameterExpression(paramName, orCondition.like);
|
262
|
+
branchConditions.push(new BinaryExpression(columnRef, "like", paramExpr));
|
263
|
+
}
|
264
|
+
if ('ilike' in orCondition && orCondition.ilike !== undefined) {
|
265
|
+
const paramName = `${baseName}_or_${i}_ilike`;
|
266
|
+
const paramExpr = new ParameterExpression(paramName, orCondition.ilike);
|
267
|
+
branchConditions.push(new BinaryExpression(columnRef, "ilike", paramExpr));
|
268
|
+
}
|
269
|
+
if ('in' in orCondition && orCondition.in !== undefined) {
|
270
|
+
const arr = orCondition.in;
|
271
|
+
const prms = arr.map((v, j) => new ParameterExpression(`${baseName}_or_${i}_in_${j}`, v));
|
272
|
+
branchConditions.push(new BinaryExpression(columnRef, "in", new ParenExpression(new ValueList(prms))));
|
273
|
+
}
|
274
|
+
if ('any' in orCondition && orCondition.any !== undefined) {
|
275
|
+
const paramName = `${baseName}_or_${i}_any`;
|
276
|
+
const paramExpr = new ParameterExpression(paramName, orCondition.any);
|
277
|
+
branchConditions.push(new BinaryExpression(columnRef, "=", new FunctionCall(null, "any", paramExpr, null)));
|
278
|
+
}
|
279
|
+
if ('<' in orCondition && orCondition['<'] !== undefined) {
|
280
|
+
const paramName = `${baseName}_or_${i}_lt`;
|
281
|
+
const paramExpr = new ParameterExpression(paramName, orCondition['<']);
|
282
|
+
branchConditions.push(new BinaryExpression(columnRef, "<", paramExpr));
|
283
|
+
}
|
284
|
+
if ('>' in orCondition && orCondition['>'] !== undefined) {
|
285
|
+
const paramName = `${baseName}_or_${i}_gt`;
|
286
|
+
const paramExpr = new ParameterExpression(paramName, orCondition['>']);
|
287
|
+
branchConditions.push(new BinaryExpression(columnRef, ">", paramExpr));
|
288
|
+
}
|
289
|
+
if ('!=' in orCondition && orCondition['!='] !== undefined) {
|
290
|
+
const paramName = `${baseName}_or_${i}_neq`;
|
291
|
+
const paramExpr = new ParameterExpression(paramName, orCondition['!=']);
|
292
|
+
branchConditions.push(new BinaryExpression(columnRef, "!=", paramExpr));
|
293
|
+
}
|
294
|
+
if ('<>' in orCondition && orCondition['<>'] !== undefined) {
|
295
|
+
const paramName = `${baseName}_or_${i}_ne`;
|
296
|
+
const paramExpr = new ParameterExpression(paramName, orCondition['<>']);
|
297
|
+
branchConditions.push(new BinaryExpression(columnRef, "<>", paramExpr));
|
298
|
+
}
|
299
|
+
if ('<=' in orCondition && orCondition['<='] !== undefined) {
|
300
|
+
const paramName = `${baseName}_or_${i}_le`;
|
301
|
+
const paramExpr = new ParameterExpression(paramName, orCondition['<=']);
|
302
|
+
branchConditions.push(new BinaryExpression(columnRef, "<=", paramExpr));
|
303
|
+
}
|
304
|
+
if ('>=' in orCondition && orCondition['>='] !== undefined) {
|
305
|
+
const paramName = `${baseName}_or_${i}_ge`;
|
306
|
+
const paramExpr = new ParameterExpression(paramName, orCondition['>=']);
|
307
|
+
branchConditions.push(new BinaryExpression(columnRef, ">=", paramExpr));
|
308
|
+
}
|
309
|
+
// Combine branch conditions with AND if there are multiple
|
310
|
+
if (branchConditions.length > 0) {
|
311
|
+
let branchExpr = branchConditions[0];
|
312
|
+
for (let j = 1; j < branchConditions.length; j++) {
|
313
|
+
branchExpr = new BinaryExpression(branchExpr, "and", branchConditions[j]);
|
314
|
+
}
|
315
|
+
// Wrap in parentheses if multiple conditions within the OR branch
|
316
|
+
if (branchConditions.length > 1) {
|
317
|
+
orExpressions.push(new ParenExpression(branchExpr));
|
318
|
+
}
|
319
|
+
else {
|
320
|
+
orExpressions.push(branchExpr);
|
321
|
+
}
|
322
|
+
}
|
323
|
+
}
|
324
|
+
// Combine OR expressions
|
325
|
+
if (orExpressions.length > 0) {
|
326
|
+
let finalOrExpr = orExpressions[0];
|
327
|
+
for (let i = 1; i < orExpressions.length; i++) {
|
328
|
+
finalOrExpr = new BinaryExpression(finalOrExpr, "or", orExpressions[i]);
|
329
|
+
}
|
330
|
+
// Wrap in parentheses and append to WHERE clause
|
331
|
+
q.appendWhere(new ParenExpression(finalOrExpr));
|
332
|
+
}
|
333
|
+
}
|
68
334
|
function validateOperators(stateValue, allowedOps, name) {
|
69
335
|
Object.keys(stateValue).forEach(op => {
|
70
336
|
if (!allowedOps.includes(op)) {
|
@@ -77,54 +343,72 @@ export class SqlParamInjector {
|
|
77
343
|
q.appendWhere(new BinaryExpression(columnRef, "=", paramExpr));
|
78
344
|
}
|
79
345
|
function injectComplexConditions(q, columnRef, name, stateValue) {
|
346
|
+
const conditions = [];
|
80
347
|
if ('=' in stateValue) {
|
81
348
|
const paramEq = new ParameterExpression(name, stateValue['=']);
|
82
|
-
|
349
|
+
conditions.push(new BinaryExpression(columnRef, "=", paramEq));
|
83
350
|
}
|
84
351
|
if ('min' in stateValue) {
|
85
352
|
const paramMin = new ParameterExpression(name + "_min", stateValue.min);
|
86
|
-
|
353
|
+
conditions.push(new BinaryExpression(columnRef, ">=", paramMin));
|
87
354
|
}
|
88
355
|
if ('max' in stateValue) {
|
89
356
|
const paramMax = new ParameterExpression(name + "_max", stateValue.max);
|
90
|
-
|
357
|
+
conditions.push(new BinaryExpression(columnRef, "<=", paramMax));
|
91
358
|
}
|
92
359
|
if ('like' in stateValue) {
|
93
360
|
const paramLike = new ParameterExpression(name + "_like", stateValue.like);
|
94
|
-
|
361
|
+
conditions.push(new BinaryExpression(columnRef, "like", paramLike));
|
362
|
+
}
|
363
|
+
if ('ilike' in stateValue) {
|
364
|
+
const paramIlike = new ParameterExpression(name + "_ilike", stateValue.ilike);
|
365
|
+
conditions.push(new BinaryExpression(columnRef, "ilike", paramIlike));
|
95
366
|
}
|
96
367
|
if ('in' in stateValue) {
|
97
368
|
const arr = stateValue['in'];
|
98
369
|
const prms = arr.map((v, i) => new ParameterExpression(`${name}_in_${i}`, v));
|
99
|
-
|
370
|
+
conditions.push(new BinaryExpression(columnRef, "in", new ParenExpression(new ValueList(prms))));
|
100
371
|
}
|
101
372
|
if ('any' in stateValue) {
|
102
373
|
const paramAny = new ParameterExpression(name + "_any", stateValue.any);
|
103
|
-
|
374
|
+
conditions.push(new BinaryExpression(columnRef, "=", new FunctionCall(null, "any", paramAny, null)));
|
104
375
|
}
|
105
376
|
if ('<' in stateValue) {
|
106
377
|
const paramLT = new ParameterExpression(name + "_lt", stateValue['<']);
|
107
|
-
|
378
|
+
conditions.push(new BinaryExpression(columnRef, "<", paramLT));
|
108
379
|
}
|
109
380
|
if ('>' in stateValue) {
|
110
381
|
const paramGT = new ParameterExpression(name + "_gt", stateValue['>']);
|
111
|
-
|
382
|
+
conditions.push(new BinaryExpression(columnRef, ">", paramGT));
|
112
383
|
}
|
113
384
|
if ('!=' in stateValue) {
|
114
385
|
const paramNEQ = new ParameterExpression(name + "_neq", stateValue['!=']);
|
115
|
-
|
386
|
+
conditions.push(new BinaryExpression(columnRef, "!=", paramNEQ));
|
116
387
|
}
|
117
388
|
if ('<>' in stateValue) {
|
118
389
|
const paramNE = new ParameterExpression(name + "_ne", stateValue['<>']);
|
119
|
-
|
390
|
+
conditions.push(new BinaryExpression(columnRef, "<>", paramNE));
|
120
391
|
}
|
121
392
|
if ('<=' in stateValue) {
|
122
393
|
const paramLE = new ParameterExpression(name + "_le", stateValue['<=']);
|
123
|
-
|
394
|
+
conditions.push(new BinaryExpression(columnRef, "<=", paramLE));
|
124
395
|
}
|
125
396
|
if ('>=' in stateValue) {
|
126
397
|
const paramGE = new ParameterExpression(name + "_ge", stateValue['>=']);
|
127
|
-
|
398
|
+
conditions.push(new BinaryExpression(columnRef, ">=", paramGE));
|
399
|
+
}
|
400
|
+
// Combine conditions with AND and wrap in parentheses if multiple conditions for clarity
|
401
|
+
if (conditions.length === 1) {
|
402
|
+
// Single condition - no parentheses needed
|
403
|
+
q.appendWhere(conditions[0]);
|
404
|
+
}
|
405
|
+
else if (conditions.length > 1) {
|
406
|
+
// Multiple conditions - combine with AND and wrap in parentheses for clarity
|
407
|
+
let combinedExpr = conditions[0];
|
408
|
+
for (let i = 1; i < conditions.length; i++) {
|
409
|
+
combinedExpr = new BinaryExpression(combinedExpr, "and", conditions[i]);
|
410
|
+
}
|
411
|
+
q.appendWhere(new ParenExpression(combinedExpr));
|
128
412
|
}
|
129
413
|
}
|
130
414
|
return query;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SqlParamInjector.js","sourceRoot":"","sources":["../../../src/transformers/SqlParamInjector.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"SqlParamInjector.js","sourceRoot":"","sources":["../../../src/transformers/SqlParamInjector.ts"],"names":[],"mappings":"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"}
|
@@ -19,11 +19,12 @@ export declare class SqlParamInjector {
|
|
19
19
|
*/
|
20
20
|
inject(query: SimpleSelectQuery | string, state: Record<string, number | string | boolean | Date | null | undefined | Condition>): SelectQuery;
|
21
21
|
}
|
22
|
-
type
|
22
|
+
type BaseCondition = {
|
23
23
|
'='?: number | string | boolean | Date;
|
24
24
|
min?: number | string | Date;
|
25
25
|
max?: number | string | Date;
|
26
26
|
like?: string;
|
27
|
+
ilike?: string;
|
27
28
|
in?: (number | string | Date)[];
|
28
29
|
any?: (number | string | Date)[];
|
29
30
|
'<'?: number | string | Date;
|
@@ -33,4 +34,13 @@ type Condition = {
|
|
33
34
|
'<='?: number | string | Date;
|
34
35
|
'>='?: number | string | Date;
|
35
36
|
};
|
37
|
+
type SingleCondition = BaseCondition & {
|
38
|
+
column?: string;
|
39
|
+
};
|
40
|
+
type LogicalCondition = {
|
41
|
+
column?: string;
|
42
|
+
and?: SingleCondition[];
|
43
|
+
or?: SingleCondition[];
|
44
|
+
};
|
45
|
+
type Condition = BaseCondition | SingleCondition | LogicalCondition;
|
36
46
|
export {};
|