rawsql-ts 0.10.3-beta → 0.10.5-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.
@@ -0,0 +1,35 @@
1
+ import { SimpleSelectQuery } from "../models/SelectQuery";
2
+ /**
3
+ * Options for pagination injection
4
+ */
5
+ export interface PaginationOptions {
6
+ /** Page number (1-based) */
7
+ page: number;
8
+ /** Number of items per page */
9
+ pageSize: number;
10
+ }
11
+ /**
12
+ * SqlPaginationInjector injects pagination (LIMIT/OFFSET) into a SelectQuery model,
13
+ * creating LIMIT and OFFSET clauses based on provided pagination options.
14
+ */
15
+ export declare class SqlPaginationInjector {
16
+ /**
17
+ * Injects pagination as LIMIT/OFFSET clauses into the given query model.
18
+ * @param query The SelectQuery to modify
19
+ * @param pagination Pagination options containing page number and page size
20
+ * @returns The modified SimpleSelectQuery with pagination applied
21
+ */
22
+ inject(query: SimpleSelectQuery | string, pagination: PaginationOptions): SimpleSelectQuery;
23
+ /**
24
+ * Removes LIMIT and OFFSET clauses from the given query.
25
+ * @param query The SelectQuery to modify
26
+ * @returns The modified SimpleSelectQuery with pagination removed
27
+ */
28
+ static removePagination(query: SimpleSelectQuery | string): SimpleSelectQuery;
29
+ /**
30
+ * Validates pagination options
31
+ * @param pagination Pagination options to validate
32
+ * @throws Error if validation fails
33
+ */
34
+ private validatePaginationOptions;
35
+ }
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqlPaginationInjector = void 0;
4
+ const SelectQuery_1 = require("../models/SelectQuery");
5
+ const Clause_1 = require("../models/Clause");
6
+ const ValueComponent_1 = require("../models/ValueComponent");
7
+ const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
8
+ /**
9
+ * SqlPaginationInjector injects pagination (LIMIT/OFFSET) into a SelectQuery model,
10
+ * creating LIMIT and OFFSET clauses based on provided pagination options.
11
+ */
12
+ class SqlPaginationInjector {
13
+ /**
14
+ * Injects pagination as LIMIT/OFFSET clauses into the given query model.
15
+ * @param query The SelectQuery to modify
16
+ * @param pagination Pagination options containing page number and page size
17
+ * @returns The modified SimpleSelectQuery with pagination applied
18
+ */
19
+ inject(query, pagination) {
20
+ // Validate pagination options
21
+ this.validatePaginationOptions(pagination);
22
+ // Convert string query to SimpleSelectQuery using SelectQueryParser if needed
23
+ if (typeof query === 'string') {
24
+ query = SelectQueryParser_1.SelectQueryParser.parse(query);
25
+ }
26
+ // Check if query is SimpleSelectQuery
27
+ if (!(query instanceof SelectQuery_1.SimpleSelectQuery)) {
28
+ throw new Error('Complex queries are not supported for pagination');
29
+ }
30
+ // Check if query already has LIMIT or OFFSET clauses
31
+ if (query.limitClause || query.offsetClause) {
32
+ throw new Error('Query already contains LIMIT or OFFSET clause. Use removePagination() first if you want to override existing pagination.');
33
+ }
34
+ // Calculate offset
35
+ const offset = (pagination.page - 1) * pagination.pageSize;
36
+ // Create LIMIT clause
37
+ const limitClause = new Clause_1.LimitClause(new ValueComponent_1.LiteralValue(pagination.pageSize));
38
+ // Create OFFSET clause (only if offset > 0)
39
+ const offsetClause = offset > 0 ? new Clause_1.OffsetClause(new ValueComponent_1.LiteralValue(offset)) : null;
40
+ // Create a new query with pagination clauses
41
+ return new SelectQuery_1.SimpleSelectQuery({
42
+ withClause: query.withClause,
43
+ selectClause: query.selectClause,
44
+ fromClause: query.fromClause,
45
+ whereClause: query.whereClause,
46
+ groupByClause: query.groupByClause,
47
+ havingClause: query.havingClause,
48
+ orderByClause: query.orderByClause,
49
+ windowClause: query.windowClause,
50
+ limitClause: limitClause,
51
+ offsetClause: offsetClause,
52
+ fetchClause: query.fetchClause,
53
+ forClause: query.forClause,
54
+ });
55
+ }
56
+ /**
57
+ * Removes LIMIT and OFFSET clauses from the given query.
58
+ * @param query The SelectQuery to modify
59
+ * @returns The modified SimpleSelectQuery with pagination removed
60
+ */
61
+ static removePagination(query) {
62
+ // Convert string query to SimpleSelectQuery using SelectQueryParser if needed
63
+ if (typeof query === 'string') {
64
+ query = SelectQueryParser_1.SelectQueryParser.parse(query);
65
+ }
66
+ // Check if query is SimpleSelectQuery
67
+ if (!(query instanceof SelectQuery_1.SimpleSelectQuery)) {
68
+ throw new Error('Complex queries are not supported for pagination removal');
69
+ }
70
+ // Create a new query without LIMIT and OFFSET clauses
71
+ return new SelectQuery_1.SimpleSelectQuery({
72
+ withClause: query.withClause,
73
+ selectClause: query.selectClause,
74
+ fromClause: query.fromClause,
75
+ whereClause: query.whereClause,
76
+ groupByClause: query.groupByClause,
77
+ havingClause: query.havingClause,
78
+ orderByClause: query.orderByClause,
79
+ windowClause: query.windowClause,
80
+ limitClause: null, // Remove LIMIT
81
+ offsetClause: null, // Remove OFFSET
82
+ fetchClause: query.fetchClause,
83
+ forClause: query.forClause,
84
+ });
85
+ }
86
+ /**
87
+ * Validates pagination options
88
+ * @param pagination Pagination options to validate
89
+ * @throws Error if validation fails
90
+ */
91
+ validatePaginationOptions(pagination) {
92
+ if (!pagination) {
93
+ throw new Error('Pagination options are required');
94
+ }
95
+ if (typeof pagination.page !== 'number' || pagination.page < 1) {
96
+ throw new Error('Page number must be a positive integer (1 or greater)');
97
+ }
98
+ if (typeof pagination.pageSize !== 'number' || pagination.pageSize < 1) {
99
+ throw new Error('Page size must be a positive integer (1 or greater)');
100
+ }
101
+ // Optional: Set reasonable upper limit for page size to prevent performance issues
102
+ if (pagination.pageSize > 1000) {
103
+ throw new Error('Page size cannot exceed 1000 items');
104
+ }
105
+ }
106
+ }
107
+ exports.SqlPaginationInjector = SqlPaginationInjector;
108
+ //# sourceMappingURL=SqlPaginationInjector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlPaginationInjector.js","sourceRoot":"","sources":["../../src/transformers/SqlPaginationInjector.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 Condition = {
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 {};
@@ -37,11 +37,82 @@ class SqlParamInjector {
37
37
  const collector = new SelectableColumnCollector_1.SelectableColumnCollector(this.tableColumnResolver);
38
38
  // Normalization is handled locally below.
39
39
  const normalize = (s) => this.options.ignoreCaseAndUnderscore ? s.toLowerCase().replace(/_/g, '') : s;
40
- const allowedOps = ['min', 'max', 'like', 'in', 'any', '=', '<', '>', '!=', '<>', '<=', '>='];
40
+ const allowedOps = ['min', 'max', 'like', 'ilike', 'in', 'any', '=', '<', '>', '!=', '<>', '<=', '>=', 'or', 'and', 'column'];
41
41
  for (const [name, stateValue] of Object.entries(state)) {
42
42
  // skip undefined values
43
43
  if (stateValue === undefined)
44
44
  continue;
45
+ // Handle OR conditions specially - they don't need the main column to exist
46
+ if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && 'or' in stateValue) {
47
+ const orConditions = stateValue.or;
48
+ if (orConditions && orConditions.length > 0) {
49
+ // For OR conditions, we need to find a query that contains any of the referenced columns
50
+ const referencedColumns = orConditions
51
+ .map(cond => cond.column || name)
52
+ .filter((col, index, arr) => arr.indexOf(col) === index); // unique columns
53
+ let targetQuery = null;
54
+ for (const colName of referencedColumns) {
55
+ const queries = finder.find(query, colName);
56
+ if (queries.length > 0) {
57
+ targetQuery = queries[0];
58
+ break;
59
+ }
60
+ }
61
+ if (!targetQuery) {
62
+ throw new Error(`None of the OR condition columns [${referencedColumns.join(', ')}] found in query`);
63
+ }
64
+ const columns = collector.collect(targetQuery);
65
+ injectOrConditions(targetQuery, name, orConditions, normalize, columns, collector);
66
+ continue;
67
+ }
68
+ }
69
+ // Handle AND conditions specially - they don't need the main column to exist
70
+ if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && 'and' in stateValue) {
71
+ const andConditions = stateValue.and;
72
+ if (andConditions && andConditions.length > 0) {
73
+ // For AND conditions, we need to find a query that contains any of the referenced columns
74
+ const referencedColumns = andConditions
75
+ .map(cond => cond.column || name)
76
+ .filter((col, index, arr) => arr.indexOf(col) === index); // unique columns
77
+ let targetQuery = null;
78
+ for (const colName of referencedColumns) {
79
+ const queries = finder.find(query, colName);
80
+ if (queries.length > 0) {
81
+ targetQuery = queries[0];
82
+ break;
83
+ }
84
+ }
85
+ if (!targetQuery) {
86
+ throw new Error(`None of the AND condition columns [${referencedColumns.join(', ')}] found in query`);
87
+ }
88
+ const columns = collector.collect(targetQuery);
89
+ injectAndConditions(targetQuery, name, andConditions, normalize, columns, collector);
90
+ continue;
91
+ }
92
+ }
93
+ // Handle explicit column mapping without OR
94
+ if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && 'column' in stateValue && !('or' in stateValue)) {
95
+ const explicitColumnName = stateValue.column;
96
+ if (explicitColumnName) {
97
+ const queries = finder.find(query, explicitColumnName);
98
+ if (queries.length === 0) {
99
+ throw new Error(`Explicit column '${explicitColumnName}' not found in query`);
100
+ }
101
+ for (const q of queries) {
102
+ const columns = collector.collect(q);
103
+ const entry = columns.find(item => normalize(item.name) === normalize(explicitColumnName));
104
+ if (!entry) {
105
+ throw new Error(`Explicit column '${explicitColumnName}' not found in query`);
106
+ }
107
+ // if object, validate its keys
108
+ if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && Object.getPrototypeOf(stateValue) === Object.prototype) {
109
+ validateOperators(stateValue, allowedOps, name);
110
+ }
111
+ injectComplexConditions(q, entry.value, name, stateValue);
112
+ }
113
+ continue;
114
+ }
115
+ }
45
116
  const queries = finder.find(query, name);
46
117
  if (queries.length === 0) {
47
118
  throw new Error(`Column '${name}' not found in query`);
@@ -52,22 +123,217 @@ class SqlParamInjector {
52
123
  if (!entry) {
53
124
  throw new Error(`Column '${name}' not found in query`);
54
125
  }
55
- const columnRef = entry.value;
56
- // if object, validate its keys
126
+ const columnRef = entry.value; // if object, validate its keys
57
127
  if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && Object.getPrototypeOf(stateValue) === Object.prototype) {
58
128
  validateOperators(stateValue, allowedOps, name);
59
129
  }
130
+ // Handle explicit column mapping
131
+ let targetColumn = columnRef;
132
+ let targetColumnName = name;
133
+ if (stateValue !== null && typeof stateValue === 'object' && !Array.isArray(stateValue) && 'column' in stateValue) {
134
+ const explicitColumnName = stateValue.column;
135
+ if (explicitColumnName) {
136
+ const explicitEntry = columns.find(item => normalize(item.name) === normalize(explicitColumnName));
137
+ if (explicitEntry) {
138
+ targetColumn = explicitEntry.value;
139
+ targetColumnName = explicitColumnName;
140
+ }
141
+ }
142
+ }
60
143
  if (stateValue === null ||
61
144
  typeof stateValue !== 'object' ||
62
145
  Array.isArray(stateValue) ||
63
146
  stateValue instanceof Date) {
64
- injectSimpleCondition(q, columnRef, name, stateValue);
147
+ injectSimpleCondition(q, targetColumn, targetColumnName, stateValue);
65
148
  }
66
149
  else {
67
- injectComplexConditions(q, columnRef, name, stateValue);
150
+ injectComplexConditions(q, targetColumn, targetColumnName, stateValue);
151
+ }
152
+ }
153
+ }
154
+ function injectAndConditions(q, baseName, andConditions, normalize, availableColumns, collector) {
155
+ // For AND conditions, we process each condition and add them all with AND logic
156
+ for (let i = 0; i < andConditions.length; i++) {
157
+ const andCondition = andConditions[i];
158
+ const columnName = andCondition.column || baseName;
159
+ // Find the target column
160
+ const entry = availableColumns.find(item => normalize(item.name) === normalize(columnName));
161
+ if (!entry) {
162
+ throw new Error(`Column '${columnName}' not found in query for AND condition`);
163
+ }
164
+ const columnRef = entry.value;
165
+ // Process each operator in the AND condition
166
+ if ('=' in andCondition && andCondition['='] !== undefined) {
167
+ const paramName = `${baseName}_and_${i}_eq`;
168
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition['=']);
169
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "=", paramExpr));
170
+ }
171
+ if ('min' in andCondition && andCondition.min !== undefined) {
172
+ const paramName = `${baseName}_and_${i}_min`;
173
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition.min);
174
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, ">=", paramExpr));
175
+ }
176
+ if ('max' in andCondition && andCondition.max !== undefined) {
177
+ const paramName = `${baseName}_and_${i}_max`;
178
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition.max);
179
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "<=", paramExpr));
180
+ }
181
+ if ('like' in andCondition && andCondition.like !== undefined) {
182
+ const paramName = `${baseName}_and_${i}_like`;
183
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition.like);
184
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "like", paramExpr));
185
+ }
186
+ if ('ilike' in andCondition && andCondition.ilike !== undefined) {
187
+ const paramName = `${baseName}_and_${i}_ilike`;
188
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition.ilike);
189
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "ilike", paramExpr));
190
+ }
191
+ if ('in' in andCondition && andCondition.in !== undefined) {
192
+ const arr = andCondition.in;
193
+ const prms = arr.map((v, j) => new ValueComponent_1.ParameterExpression(`${baseName}_and_${i}_in_${j}`, v));
194
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "in", new ValueComponent_1.ParenExpression(new ValueComponent_1.ValueList(prms))));
195
+ }
196
+ if ('any' in andCondition && andCondition.any !== undefined) {
197
+ const paramName = `${baseName}_and_${i}_any`;
198
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition.any);
199
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "=", new ValueComponent_1.FunctionCall(null, "any", paramExpr, null)));
200
+ }
201
+ if ('<' in andCondition && andCondition['<'] !== undefined) {
202
+ const paramName = `${baseName}_and_${i}_lt`;
203
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition['<']);
204
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "<", paramExpr));
205
+ }
206
+ if ('>' in andCondition && andCondition['>'] !== undefined) {
207
+ const paramName = `${baseName}_and_${i}_gt`;
208
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition['>']);
209
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, ">", paramExpr));
210
+ }
211
+ if ('!=' in andCondition && andCondition['!='] !== undefined) {
212
+ const paramName = `${baseName}_and_${i}_neq`;
213
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition['!=']);
214
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "!=", paramExpr));
215
+ }
216
+ if ('<>' in andCondition && andCondition['<>'] !== undefined) {
217
+ const paramName = `${baseName}_and_${i}_ne`;
218
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition['<>']);
219
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "<>", paramExpr));
220
+ }
221
+ if ('<=' in andCondition && andCondition['<='] !== undefined) {
222
+ const paramName = `${baseName}_and_${i}_le`;
223
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition['<=']);
224
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "<=", paramExpr));
225
+ }
226
+ if ('>=' in andCondition && andCondition['>='] !== undefined) {
227
+ const paramName = `${baseName}_and_${i}_ge`;
228
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, andCondition['>=']);
229
+ q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, ">=", paramExpr));
68
230
  }
69
231
  }
70
232
  }
233
+ function injectOrConditions(q, baseName, orConditions, normalize, availableColumns, collector) {
234
+ const orExpressions = [];
235
+ for (let i = 0; i < orConditions.length; i++) {
236
+ const orCondition = orConditions[i];
237
+ const columnName = orCondition.column || baseName;
238
+ // Find the target column
239
+ const entry = availableColumns.find(item => normalize(item.name) === normalize(columnName));
240
+ if (!entry) {
241
+ throw new Error(`Column '${columnName}' not found in query for OR condition`);
242
+ }
243
+ const columnRef = entry.value;
244
+ // Create conditions for this OR branch
245
+ const branchConditions = [];
246
+ // Process each operator in the OR condition
247
+ if ('=' in orCondition && orCondition['='] !== undefined) {
248
+ const paramName = `${baseName}_or_${i}_eq`;
249
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition['=']);
250
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "=", paramExpr));
251
+ }
252
+ if ('min' in orCondition && orCondition.min !== undefined) {
253
+ const paramName = `${baseName}_or_${i}_min`;
254
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition.min);
255
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, ">=", paramExpr));
256
+ }
257
+ if ('max' in orCondition && orCondition.max !== undefined) {
258
+ const paramName = `${baseName}_or_${i}_max`;
259
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition.max);
260
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "<=", paramExpr));
261
+ }
262
+ if ('like' in orCondition && orCondition.like !== undefined) {
263
+ const paramName = `${baseName}_or_${i}_like`;
264
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition.like);
265
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "like", paramExpr));
266
+ }
267
+ if ('ilike' in orCondition && orCondition.ilike !== undefined) {
268
+ const paramName = `${baseName}_or_${i}_ilike`;
269
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition.ilike);
270
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "ilike", paramExpr));
271
+ }
272
+ if ('in' in orCondition && orCondition.in !== undefined) {
273
+ const arr = orCondition.in;
274
+ const prms = arr.map((v, j) => new ValueComponent_1.ParameterExpression(`${baseName}_or_${i}_in_${j}`, v));
275
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "in", new ValueComponent_1.ParenExpression(new ValueComponent_1.ValueList(prms))));
276
+ }
277
+ if ('any' in orCondition && orCondition.any !== undefined) {
278
+ const paramName = `${baseName}_or_${i}_any`;
279
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition.any);
280
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "=", new ValueComponent_1.FunctionCall(null, "any", paramExpr, null)));
281
+ }
282
+ if ('<' in orCondition && orCondition['<'] !== undefined) {
283
+ const paramName = `${baseName}_or_${i}_lt`;
284
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition['<']);
285
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "<", paramExpr));
286
+ }
287
+ if ('>' in orCondition && orCondition['>'] !== undefined) {
288
+ const paramName = `${baseName}_or_${i}_gt`;
289
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition['>']);
290
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, ">", paramExpr));
291
+ }
292
+ if ('!=' in orCondition && orCondition['!='] !== undefined) {
293
+ const paramName = `${baseName}_or_${i}_neq`;
294
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition['!=']);
295
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "!=", paramExpr));
296
+ }
297
+ if ('<>' in orCondition && orCondition['<>'] !== undefined) {
298
+ const paramName = `${baseName}_or_${i}_ne`;
299
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition['<>']);
300
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "<>", paramExpr));
301
+ }
302
+ if ('<=' in orCondition && orCondition['<='] !== undefined) {
303
+ const paramName = `${baseName}_or_${i}_le`;
304
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition['<=']);
305
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, "<=", paramExpr));
306
+ }
307
+ if ('>=' in orCondition && orCondition['>='] !== undefined) {
308
+ const paramName = `${baseName}_or_${i}_ge`;
309
+ const paramExpr = new ValueComponent_1.ParameterExpression(paramName, orCondition['>=']);
310
+ branchConditions.push(new ValueComponent_1.BinaryExpression(columnRef, ">=", paramExpr));
311
+ }
312
+ // Combine branch conditions with AND if there are multiple
313
+ if (branchConditions.length > 0) {
314
+ let branchExpr = branchConditions[0];
315
+ for (let j = 1; j < branchConditions.length; j++) {
316
+ branchExpr = new ValueComponent_1.BinaryExpression(branchExpr, "and", branchConditions[j]);
317
+ }
318
+ // Wrap in parentheses if multiple conditions within the OR branch
319
+ if (branchConditions.length > 1) {
320
+ orExpressions.push(new ValueComponent_1.ParenExpression(branchExpr));
321
+ }
322
+ else {
323
+ orExpressions.push(branchExpr);
324
+ }
325
+ }
326
+ }
327
+ // Combine OR expressions
328
+ if (orExpressions.length > 0) {
329
+ let finalOrExpr = orExpressions[0];
330
+ for (let i = 1; i < orExpressions.length; i++) {
331
+ finalOrExpr = new ValueComponent_1.BinaryExpression(finalOrExpr, "or", orExpressions[i]);
332
+ }
333
+ // Wrap in parentheses and append to WHERE clause
334
+ q.appendWhere(new ValueComponent_1.ParenExpression(finalOrExpr));
335
+ }
336
+ }
71
337
  function validateOperators(stateValue, allowedOps, name) {
72
338
  Object.keys(stateValue).forEach(op => {
73
339
  if (!allowedOps.includes(op)) {
@@ -80,54 +346,72 @@ class SqlParamInjector {
80
346
  q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "=", paramExpr));
81
347
  }
82
348
  function injectComplexConditions(q, columnRef, name, stateValue) {
349
+ const conditions = [];
83
350
  if ('=' in stateValue) {
84
351
  const paramEq = new ValueComponent_1.ParameterExpression(name, stateValue['=']);
85
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "=", paramEq));
352
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "=", paramEq));
86
353
  }
87
354
  if ('min' in stateValue) {
88
355
  const paramMin = new ValueComponent_1.ParameterExpression(name + "_min", stateValue.min);
89
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, ">=", paramMin));
356
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, ">=", paramMin));
90
357
  }
91
358
  if ('max' in stateValue) {
92
359
  const paramMax = new ValueComponent_1.ParameterExpression(name + "_max", stateValue.max);
93
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "<=", paramMax));
360
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "<=", paramMax));
94
361
  }
95
362
  if ('like' in stateValue) {
96
363
  const paramLike = new ValueComponent_1.ParameterExpression(name + "_like", stateValue.like);
97
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "like", paramLike));
364
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "like", paramLike));
365
+ }
366
+ if ('ilike' in stateValue) {
367
+ const paramIlike = new ValueComponent_1.ParameterExpression(name + "_ilike", stateValue.ilike);
368
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "ilike", paramIlike));
98
369
  }
99
370
  if ('in' in stateValue) {
100
371
  const arr = stateValue['in'];
101
372
  const prms = arr.map((v, i) => new ValueComponent_1.ParameterExpression(`${name}_in_${i}`, v));
102
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "in", new ValueComponent_1.ParenExpression(new ValueComponent_1.ValueList(prms))));
373
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "in", new ValueComponent_1.ParenExpression(new ValueComponent_1.ValueList(prms))));
103
374
  }
104
375
  if ('any' in stateValue) {
105
376
  const paramAny = new ValueComponent_1.ParameterExpression(name + "_any", stateValue.any);
106
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "=", new ValueComponent_1.FunctionCall(null, "any", paramAny, null)));
377
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "=", new ValueComponent_1.FunctionCall(null, "any", paramAny, null)));
107
378
  }
108
379
  if ('<' in stateValue) {
109
380
  const paramLT = new ValueComponent_1.ParameterExpression(name + "_lt", stateValue['<']);
110
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "<", paramLT));
381
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "<", paramLT));
111
382
  }
112
383
  if ('>' in stateValue) {
113
384
  const paramGT = new ValueComponent_1.ParameterExpression(name + "_gt", stateValue['>']);
114
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, ">", paramGT));
385
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, ">", paramGT));
115
386
  }
116
387
  if ('!=' in stateValue) {
117
388
  const paramNEQ = new ValueComponent_1.ParameterExpression(name + "_neq", stateValue['!=']);
118
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "!=", paramNEQ));
389
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "!=", paramNEQ));
119
390
  }
120
391
  if ('<>' in stateValue) {
121
392
  const paramNE = new ValueComponent_1.ParameterExpression(name + "_ne", stateValue['<>']);
122
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "<>", paramNE));
393
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "<>", paramNE));
123
394
  }
124
395
  if ('<=' in stateValue) {
125
396
  const paramLE = new ValueComponent_1.ParameterExpression(name + "_le", stateValue['<=']);
126
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, "<=", paramLE));
397
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, "<=", paramLE));
127
398
  }
128
399
  if ('>=' in stateValue) {
129
400
  const paramGE = new ValueComponent_1.ParameterExpression(name + "_ge", stateValue['>=']);
130
- q.appendWhere(new ValueComponent_1.BinaryExpression(columnRef, ">=", paramGE));
401
+ conditions.push(new ValueComponent_1.BinaryExpression(columnRef, ">=", paramGE));
402
+ }
403
+ // Combine conditions with AND and wrap in parentheses if multiple conditions for clarity
404
+ if (conditions.length === 1) {
405
+ // Single condition - no parentheses needed
406
+ q.appendWhere(conditions[0]);
407
+ }
408
+ else if (conditions.length > 1) {
409
+ // Multiple conditions - combine with AND and wrap in parentheses for clarity
410
+ let combinedExpr = conditions[0];
411
+ for (let i = 1; i < conditions.length; i++) {
412
+ combinedExpr = new ValueComponent_1.BinaryExpression(combinedExpr, "and", conditions[i]);
413
+ }
414
+ q.appendWhere(new ValueComponent_1.ParenExpression(combinedExpr));
131
415
  }
132
416
  }
133
417
  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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"}