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.
- package/README.md +127 -17
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +11 -11
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/transformers/SqlPaginationInjector.js +104 -0
- package/dist/esm/transformers/SqlPaginationInjector.js.map +1 -0
- package/dist/esm/transformers/SqlParamInjector.js +301 -17
- package/dist/esm/transformers/SqlParamInjector.js.map +1 -1
- package/dist/esm/transformers/SqlSortInjector.js +146 -0
- package/dist/esm/transformers/SqlSortInjector.js.map +1 -0
- package/dist/esm/types/index.d.ts +2 -0
- package/dist/esm/types/transformers/SqlPaginationInjector.d.ts +35 -0
- package/dist/esm/types/transformers/SqlParamInjector.d.ts +11 -1
- package/dist/esm/types/transformers/SqlSortInjector.d.ts +36 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +11 -11
- package/dist/index.min.js.map +4 -4
- package/dist/transformers/SqlPaginationInjector.d.ts +35 -0
- package/dist/transformers/SqlPaginationInjector.js +108 -0
- package/dist/transformers/SqlPaginationInjector.js.map +1 -0
- package/dist/transformers/SqlParamInjector.d.ts +11 -1
- package/dist/transformers/SqlParamInjector.js +301 -17
- package/dist/transformers/SqlParamInjector.js.map +1 -1
- package/dist/transformers/SqlSortInjector.d.ts +36 -0
- package/dist/transformers/SqlSortInjector.js +150 -0
- package/dist/transformers/SqlSortInjector.js.map +1 -0
- package/package.json +1 -1
@@ -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":";;;AAAA,uDAAuE;AACvE,6CAA6D;AAC7D,6DAAwD;AACxD,oEAAiE;AAYjE;;;GAGG;AACH,MAAa,qBAAqB;IAE9B;;;;;OAKG;IACI,MAAM,CACT,KAAiC,EACjC,UAA6B;QAE7B,8BAA8B;QAC9B,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAE3C,8EAA8E;QAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,GAAG,qCAAiB,CAAC,KAAK,CAAC,KAAK,CAAsB,CAAC;QAChE,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,CAAC,KAAK,YAAY,+BAAiB,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACxE,CAAC;QAED,qDAAqD;QACrD,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,0HAA0H,CAAC,CAAC;QAChJ,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;QAE3D,sBAAsB;QACtB,MAAM,WAAW,GAAG,IAAI,oBAAW,CAC/B,IAAI,6BAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CACxC,CAAC;QAEF,4CAA4C;QAC5C,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAY,CAC9C,IAAI,6BAAY,CAAC,MAAM,CAAC,CAC3B,CAAC,CAAC,CAAC,IAAI,CAAC;QAET,6CAA6C;QAC7C,OAAO,IAAI,+BAAiB,CAAC;YACzB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,WAAW,EAAE,WAAW;YACxB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC7B,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,gBAAgB,CAAC,KAAiC;QAC5D,8EAA8E;QAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,GAAG,qCAAiB,CAAC,KAAK,CAAC,KAAK,CAAsB,CAAC;QAChE,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,CAAC,KAAK,YAAY,+BAAiB,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAChF,CAAC;QAED,sDAAsD;QACtD,OAAO,IAAI,+BAAiB,CAAC;YACzB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,WAAW,EAAE,IAAI,EAAE,eAAe;YAClC,YAAY,EAAE,IAAI,EAAE,gBAAgB;YACpC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC7B,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,yBAAyB,CAAC,UAA6B;QAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC3E,CAAC;QAED,mFAAmF;QACnF,IAAI,UAAU,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;CACJ;AApHD,sDAoHC"}
|
@@ -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 {};
|
@@ -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,
|
147
|
+
injectSimpleCondition(q, targetColumn, targetColumnName, stateValue);
|
65
148
|
}
|
66
149
|
else {
|
67
|
-
injectComplexConditions(q,
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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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"}
|