rawsql-ts 0.3.0-beta → 0.5.0-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 +73 -17
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/BinarySelectQuery.js +10 -2
- package/dist/esm/models/BinarySelectQuery.js.map +1 -1
- package/dist/esm/models/SelectQuery.js.map +1 -1
- package/dist/esm/models/SimpleSelectQuery.js +12 -2
- package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/models/ValueComponent.js +12 -2
- package/dist/esm/models/ValueComponent.js.map +1 -1
- package/dist/esm/models/ValuesQuery.js +16 -1
- package/dist/esm/models/ValuesQuery.js.map +1 -1
- package/dist/esm/transformers/Formatter.js +60 -10
- package/dist/esm/transformers/Formatter.js.map +1 -1
- package/dist/esm/transformers/ParameterCollector.js +33 -0
- package/dist/esm/transformers/ParameterCollector.js.map +1 -0
- package/dist/esm/transformers/{QueryConverter.js → QueryBuilder.js} +42 -42
- package/dist/esm/transformers/QueryBuilder.js.map +1 -0
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/types/models/BinarySelectQuery.d.ts +7 -1
- package/dist/esm/types/models/SelectQuery.d.ts +4 -1
- package/dist/esm/types/models/SimpleSelectQuery.d.ts +7 -1
- package/dist/esm/types/models/ValueComponent.d.ts +8 -2
- package/dist/esm/types/models/ValuesQuery.d.ts +17 -2
- package/dist/esm/types/transformers/Formatter.d.ts +12 -3
- package/dist/esm/types/transformers/ParameterCollector.d.ts +12 -0
- package/dist/esm/types/transformers/{QueryConverter.d.ts → QueryBuilder.d.ts} +14 -21
- package/dist/esm/types/utils/ParameterHelper.d.ts +14 -0
- package/dist/esm/utils/ParameterHelper.js +27 -0
- package/dist/esm/utils/ParameterHelper.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/BinarySelectQuery.d.ts +7 -1
- package/dist/models/BinarySelectQuery.js +10 -2
- package/dist/models/BinarySelectQuery.js.map +1 -1
- package/dist/models/SelectQuery.d.ts +4 -1
- package/dist/models/SelectQuery.js.map +1 -1
- package/dist/models/SimpleSelectQuery.d.ts +7 -1
- package/dist/models/SimpleSelectQuery.js +12 -2
- package/dist/models/SimpleSelectQuery.js.map +1 -1
- package/dist/models/ValueComponent.d.ts +8 -2
- package/dist/models/ValueComponent.js +12 -2
- package/dist/models/ValueComponent.js.map +1 -1
- package/dist/models/ValuesQuery.d.ts +17 -2
- package/dist/models/ValuesQuery.js +16 -1
- package/dist/models/ValuesQuery.js.map +1 -1
- package/dist/transformers/Formatter.d.ts +12 -3
- package/dist/transformers/Formatter.js +61 -11
- package/dist/transformers/Formatter.js.map +1 -1
- package/dist/transformers/ParameterCollector.d.ts +12 -0
- package/dist/transformers/ParameterCollector.js +37 -0
- package/dist/transformers/ParameterCollector.js.map +1 -0
- package/dist/transformers/{QueryConverter.d.ts → QueryBuilder.d.ts} +14 -21
- package/dist/transformers/{QueryConverter.js → QueryBuilder.js} +44 -44
- package/dist/transformers/QueryBuilder.js.map +1 -0
- package/dist/utils/ParameterHelper.d.ts +14 -0
- package/dist/utils/ParameterHelper.js +31 -0
- package/dist/utils/ParameterHelper.js.map +1 -0
- package/package.json +2 -2
- package/dist/esm/transformers/QueryConverter.js.map +0 -1
- package/dist/transformers/QueryConverter.js.map +0 -1
package/README.md
CHANGED
@@ -115,10 +115,13 @@ const customSql = formatter.format(query, {
|
|
115
115
|
|
116
116
|
### Configurable Options
|
117
117
|
|
118
|
-
Formatting options are provided as the second argument to the `
|
118
|
+
Formatting options are provided as the second argument to the `formatWithParameters()` method. You can customize:
|
119
119
|
- `identifierEscape`: How identifiers are escaped (e.g., `"`, `[`, `` ` ``)
|
120
120
|
- `parameterSymbol`: The symbol or pattern for parameters (e.g., `:`, `@`, `?`, or `{ start: '${', end: '}' }`)
|
121
|
-
- `
|
121
|
+
- `parameterStyle`: Controls the parameter style (anonymous, indexed, or named)
|
122
|
+
|
123
|
+
> [!Note]
|
124
|
+
> The traditional `format()` method is also available. If you only need the SQL string without parameter information, use the `format` method instead of `formatWithParameters()`.
|
122
125
|
|
123
126
|
### Usage Example
|
124
127
|
|
@@ -130,9 +133,11 @@ import { SelectQueryParser, Formatter } from 'rawsql-ts';
|
|
130
133
|
const sql = `SELECT user_id, name FROM users WHERE active = TRUE`;
|
131
134
|
const query = SelectQueryParser.parse(sql);
|
132
135
|
const formatter = new Formatter();
|
133
|
-
const
|
134
|
-
console.log(
|
136
|
+
const formatted = formatter.formatWithParameters(query, Formatter.PRESETS.postgres);
|
137
|
+
console.log(formatted.sql);
|
135
138
|
// => select "user_id", "name" from "users" where "active" = true
|
139
|
+
console.log(formatted.params);
|
140
|
+
// => { ... } (parameters object or array depending on style)
|
136
141
|
```
|
137
142
|
|
138
143
|
#### Using Manual Configuration
|
@@ -143,16 +148,66 @@ import { SelectQueryParser, Formatter } from 'rawsql-ts';
|
|
143
148
|
const sql = `SELECT user_id, name FROM users WHERE active = TRUE`;
|
144
149
|
const query = SelectQueryParser.parse(sql);
|
145
150
|
const formatter = new Formatter();
|
146
|
-
const
|
151
|
+
const formatted = formatter.formatWithParameters(query, {
|
147
152
|
identifierEscape: { start: '`', end: '`' },
|
148
153
|
parameterSymbol: '?',
|
149
|
-
|
154
|
+
parameterStyle: 'anonymous',
|
150
155
|
});
|
151
|
-
console.log(
|
156
|
+
console.log(formatted.sql);
|
152
157
|
// => select `user_id`, `name` from `users` where `active` = ?
|
158
|
+
console.log(formatted.params);
|
159
|
+
// => [ ... ] (parameters array)
|
153
160
|
```
|
154
161
|
|
155
|
-
rawsql-ts is designed to be flexible and support various SQL dialects. The `Formatter` class can be customized to handle different dialects by adjusting the identifier escape characters, parameter symbols, and
|
162
|
+
rawsql-ts is designed to be flexible and support various SQL dialects. The `Formatter` class can be customized to handle different dialects by adjusting the identifier escape characters, parameter symbols, and parameter style. This makes it easy to work with SQL queries for different database systems using a consistent API.
|
163
|
+
|
164
|
+
---
|
165
|
+
|
166
|
+
### Advanced Parameterized Query Formatting
|
167
|
+
|
168
|
+
rawsql-ts's `Formatter` class supports advanced parameterized query formatting for all major SQL dialects. You can output SQL with parameters in three styles:
|
169
|
+
|
170
|
+
- **Anonymous** (`?`): For MySQL and similar drivers. Parameters are output as `?` and values are provided as an array.
|
171
|
+
- **Indexed** (`$1`, `$2`, ...): For PostgreSQL and compatible drivers. Parameters are output as `$1`, `$2`, ... and values are provided as an array in the correct order.
|
172
|
+
- **Named** (`:name`, `@name`, `$name`): For SQL Server, SQLite, and ORMs that support named parameters. Parameters are output as `:name`, `@name`, or `$name` and values are provided as an object (dictionary).
|
173
|
+
|
174
|
+
You can control the parameter style using the `parameterStyle` option in the Formatter configuration, or by using one of the built-in presets. **In most cases, you do not need to set this manually—just use the appropriate preset (e.g., `Formatter.PRESETS.mysql`, `Formatter.PRESETS.postgres`, etc.) and the correct parameter style will be applied automatically.**
|
175
|
+
|
176
|
+
#### Example: Parameterized Query Output
|
177
|
+
|
178
|
+
```typescript
|
179
|
+
import { SelectQueryParser, Formatter, ParameterStyle } from 'rawsql-ts';
|
180
|
+
|
181
|
+
const sql = 'SELECT * FROM users WHERE id = :id AND status = :status';
|
182
|
+
const query = SelectQueryParser.parse(sql);
|
183
|
+
query.setParameter('id', 123);
|
184
|
+
query.setParameter('status', 'active');
|
185
|
+
const formatter = new Formatter();
|
186
|
+
|
187
|
+
// Anonymous style (MySQL)
|
188
|
+
const anon = formatter.formatWithParameters(query, { parameterStyle: ParameterStyle.Anonymous });
|
189
|
+
// anon.sql: 'select * from "users" where "id" = ? and "status" = ?'
|
190
|
+
// anon.params: [123, 'active']
|
191
|
+
|
192
|
+
// Indexed style (PostgreSQL)
|
193
|
+
const indexed = formatter.formatWithParameters(query, { parameterStyle: ParameterStyle.Indexed });
|
194
|
+
// indexed.sql: 'select * from "users" where "id" = $1 and "status" = $2'
|
195
|
+
// indexed.params: [123, 'active']
|
196
|
+
|
197
|
+
// Named style (SQL Server, SQLite, ORMs)
|
198
|
+
const named = formatter.formatWithParameters(query, { parameterStyle: ParameterStyle.Named });
|
199
|
+
// named.sql: 'select * from "users" where "id" = :id and "status" = :status'
|
200
|
+
// named.params: { id: 123, status: 'active' }
|
201
|
+
```
|
202
|
+
|
203
|
+
The formatter automatically assigns parameter indexes in the order they appear in the query, even for complex queries with CTEs, subqueries, or set operations (UNION, INTERSECT, etc.). When combining queries, parameter indexes are always reassigned to ensure correct binding order for your database client.
|
204
|
+
|
205
|
+
This makes rawsql-ts ideal for building safe, maintainable, and highly portable SQL in TypeScript, with zero risk of SQL injection and maximum compatibility across database systems.
|
206
|
+
|
207
|
+
A unique feature of rawsql-ts is the `setParameter` method. Instead of passing parameter values at formatting time, you assign values directly to the query object using `setParameter`. This makes your code highly portable and decouples query construction from parameter binding. Parameter indexes (for indexed or anonymous styles) are always assigned at formatting time, so even if you modify or combine queries (e.g., with UNION, CTEs, or subqueries), the parameter order and binding will always be correct and never break.
|
208
|
+
|
209
|
+
> [!Tip]
|
210
|
+
> While rawsql-ts supports anonymous and indexed parameters, it is highly recommended to use named parameters in your source code. Using names makes your queries much more readable and maintainable, and the setParameter method assigns values by name, reducing the risk of mistakes. You can always output the final SQL and parameters in the style required by your database client (e.g., anonymous or indexed) at formatting time. This approach lets you write clear, maintainable code during development, while still generating the exact parameter style needed for your production environment.
|
156
211
|
|
157
212
|
---
|
158
213
|
|
@@ -319,9 +374,6 @@ Overrides a SELECT item using its SQL expression. The callback receives the orig
|
|
319
374
|
// Override the SELECT item 'journal_date' to use greatest(journal_date, DATE '2025-01-01')
|
320
375
|
query.overrideSelectItemExpr('journal_date', expr => `greatest(${expr}, DATE '2025-01-01')`);
|
321
376
|
```
|
322
|
-
---
|
323
|
-
|
324
|
-
|
325
377
|
|
326
378
|
---
|
327
379
|
|
@@ -347,10 +399,12 @@ A suite of utilities for transforming and analyzing SQL ASTs.
|
|
347
399
|
Consolidates all CTEs into a single root-level WITH clause. Throws an error if duplicate CTE names with different definitions are found.
|
348
400
|
- **QueryNormalizer**
|
349
401
|
Converts any SELECT/UNION/VALUES query into a standard SimpleSelectQuery. Handles subquery wrapping and automatic column name generation.
|
350
|
-
- **
|
402
|
+
- **QueryBuilder**
|
351
403
|
Converts any SELECT/UNION/VALUES query into a standard SimpleSelectQuery. Handles subquery wrapping and automatic column name generation.
|
352
404
|
Supports CREATE TABLE ... AS SELECT ... conversion:
|
353
|
-
- `
|
405
|
+
- `QueryBuilder.buildCreateTableQuery(query, tableName, isTemporary?)` creates a `CreateTableQuery` from any SELECT query.
|
406
|
+
Supports combining multiple queries:
|
407
|
+
- `QueryBuilder.buildBinaryQuery(queries, operator)` combines an array of SelectQuery objects into a single BinarySelectQuery using the specified set operator (e.g., 'union', 'intersect', 'except').
|
354
408
|
|
355
409
|
- **TableColumnResolver**
|
356
410
|
A function type for resolving column names from a table name, mainly used for wildcard expansion (e.g., `table.*`). Used by analyzers like SelectValueCollector.
|
@@ -358,6 +412,9 @@ A suite of utilities for transforming and analyzing SQL ASTs.
|
|
358
412
|
export type TableColumnResolver = (tableName: string) => string[];
|
359
413
|
```
|
360
414
|
|
415
|
+
> [!NOTE]
|
416
|
+
> As of version 0.4.0-beta, the class previously named `QueryConverter` has been renamed to `QueryBuilder`, and its methods have been updated for consistency. The new `buildBinaryQuery` method was also introduced, allowing you to combine multiple `SelectQuery` objects into a single set operation query. These are breaking changes. If you were using `QueryConverter` in earlier versions, please update your code to use `QueryBuilder` and the new method names (e.g., `buildCreateTableQuery`, `buildBinaryQuery`).
|
417
|
+
|
361
418
|
---
|
362
419
|
|
363
420
|
## Usage Example
|
@@ -419,15 +476,15 @@ Selectable columns:
|
|
419
476
|
|
420
477
|
```typescript
|
421
478
|
// Create Table from SELECT Example
|
422
|
-
import {
|
479
|
+
import { QueryBuilder, SelectQueryParser, Formatter } from 'rawsql-ts';
|
423
480
|
|
424
481
|
const select = SelectQueryParser.parse('SELECT id, name FROM users');
|
425
|
-
const create =
|
482
|
+
const create = QueryBuilder.buildCreateTableQuery(select, 'my_table');
|
426
483
|
const sqlCreate = new Formatter().format(create);
|
427
484
|
console.log(sqlCreate);
|
428
485
|
// => create table "my_table" as select "id", "name" from "users"
|
429
486
|
|
430
|
-
const createTemp =
|
487
|
+
const createTemp = QueryBuilder.buildCreateTableQuery(select, 'tmp_table', true);
|
431
488
|
const sqlTemp = new Formatter().format(createTemp);
|
432
489
|
console.log(sqlTemp);
|
433
490
|
// => create temporary table "tmp_table" as select "id", "name" from "users"
|
@@ -552,4 +609,3 @@ Node.js v22.14.0
|
|
552
609
|
---
|
553
610
|
|
554
611
|
Feel free to try rawsql-ts! Questions, requests, and bug reports are always welcome.
|
555
|
-
|
package/dist/esm/index.js
CHANGED
@@ -8,7 +8,7 @@ export * from './models/ValuesQuery';
|
|
8
8
|
export * from './transformers/CTECollector';
|
9
9
|
export * from './transformers/CTENormalizer';
|
10
10
|
export * from './transformers/Formatter';
|
11
|
-
export * from './transformers/
|
11
|
+
export * from './transformers/QueryBuilder'; // old name:QueryConverter
|
12
12
|
export * from './transformers/SelectValueCollector';
|
13
13
|
export * from './transformers/SelectableColumnCollector';
|
14
14
|
export * from './transformers/TableColumnResolver';
|
package/dist/esm/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAErC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAErC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,oEAAoE"}
|
@@ -3,6 +3,7 @@ import { SqlComponent } from "./SqlComponent";
|
|
3
3
|
import { RawString } from "./ValueComponent";
|
4
4
|
import { CTENormalizer } from "../transformers/CTENormalizer";
|
5
5
|
import { SelectQueryParser } from "../parsers/SelectQueryParser";
|
6
|
+
import { ParameterHelper } from "../utils/ParameterHelper";
|
6
7
|
/**
|
7
8
|
* Represents a binary SELECT query (e.g., UNION, INTERSECT, EXCEPT).
|
8
9
|
*/
|
@@ -92,8 +93,6 @@ export class BinarySelectQuery extends SqlComponent {
|
|
92
93
|
this.left = new BinarySelectQuery(this.left, this.operator.value, this.right);
|
93
94
|
this.operator = new RawString(operator);
|
94
95
|
this.right = query;
|
95
|
-
// const normalizer = new CTENormalizer();
|
96
|
-
// normalizer.normalize(this);
|
97
96
|
CTENormalizer.normalize(this);
|
98
97
|
return this;
|
99
98
|
}
|
@@ -132,6 +131,15 @@ export class BinarySelectQuery extends SqlComponent {
|
|
132
131
|
toSource(alias = "subq") {
|
133
132
|
return new SourceExpression(new SubQuerySource(this), new SourceAliasExpression(alias, null));
|
134
133
|
}
|
134
|
+
/**
|
135
|
+
* Sets the value of a parameter by name in this query.
|
136
|
+
* @param name Parameter name
|
137
|
+
* @param value Value to set
|
138
|
+
*/
|
139
|
+
setParameter(name, value) {
|
140
|
+
ParameterHelper.set(this, name, value);
|
141
|
+
return this;
|
142
|
+
}
|
135
143
|
}
|
136
144
|
BinarySelectQuery.kind = Symbol("BinarySelectQuery");
|
137
145
|
//# sourceMappingURL=BinarySelectQuery.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BinarySelectQuery.js","sourceRoot":"","sources":["../../../src/models/BinarySelectQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;
|
1
|
+
{"version":3,"file":"BinarySelectQuery.js","sourceRoot":"","sources":["../../../src/models/BinarySelectQuery.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SelectQuery.js","sourceRoot":"","sources":["../../../src/models/SelectQuery.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"SelectQuery.js","sourceRoot":"","sources":["../../../src/models/SelectQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC"}
|
@@ -5,10 +5,11 @@ import { ValueParser } from "../parsers/ValueParser";
|
|
5
5
|
import { CTENormalizer } from "../transformers/CTENormalizer";
|
6
6
|
import { SelectableColumnCollector } from "../transformers/SelectableColumnCollector";
|
7
7
|
import { SourceParser } from "../parsers/SourceParser";
|
8
|
-
import { BinarySelectQuery } from "./BinarySelectQuery";
|
9
8
|
import { SelectQueryParser } from "../parsers/SelectQueryParser";
|
10
9
|
import { Formatter } from "../transformers/Formatter";
|
11
10
|
import { UpstreamSelectQueryFinder } from "../transformers/UpstreamSelectQueryFinder";
|
11
|
+
import { QueryBuilder } from "../transformers/QueryBuilder";
|
12
|
+
import { ParameterHelper } from "../utils/ParameterHelper";
|
12
13
|
/**
|
13
14
|
* Represents a simple SELECT query in SQL.
|
14
15
|
*/
|
@@ -96,7 +97,7 @@ export class SimpleSelectQuery extends SqlComponent {
|
|
96
97
|
* @returns A new BinarySelectQuery representing "this [operator] rightQuery"
|
97
98
|
*/
|
98
99
|
toBinaryQuery(operator, rightQuery) {
|
99
|
-
return
|
100
|
+
return QueryBuilder.buildBinaryQuery([this, rightQuery], operator);
|
100
101
|
}
|
101
102
|
/**
|
102
103
|
* Appends a new condition to the query's WHERE clause using AND logic.
|
@@ -353,6 +354,15 @@ export class SimpleSelectQuery extends SqlComponent {
|
|
353
354
|
this.appendWhereRaw(exprBuilder(exprStr));
|
354
355
|
}
|
355
356
|
}
|
357
|
+
/**
|
358
|
+
* Sets the value of a parameter by name in this query.
|
359
|
+
* @param name Parameter name
|
360
|
+
* @param value Value to set
|
361
|
+
*/
|
362
|
+
setParameter(name, value) {
|
363
|
+
ParameterHelper.set(this, name, value);
|
364
|
+
return this;
|
365
|
+
}
|
356
366
|
}
|
357
367
|
SimpleSelectQuery.kind = Symbol("SelectQuery");
|
358
368
|
//# sourceMappingURL=SimpleSelectQuery.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SimpleSelectQuery.js","sourceRoot":"","sources":["../../../src/models/SimpleSelectQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAwC,YAAY,EAAE,UAAU,EAAE,YAAY,EAA4C,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAqB,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpQ,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAkB,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
1
|
+
{"version":3,"file":"SimpleSelectQuery.js","sourceRoot":"","sources":["../../../src/models/SimpleSelectQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAwC,YAAY,EAAE,UAAU,EAAE,YAAY,EAA4C,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAqB,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpQ,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAkB,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAIvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAa/C,YACI,UAA6B,EAC7B,YAA0B,EAC1B,UAA6B,EAC7B,WAA+B,EAC/B,aAAmC,EACnC,YAAiC,EACjC,aAAmC,EACnC,iBAA2C,EAC3C,cAAkC,EAClC,SAA2B;QAE3B,KAAK,EAAE,CAAC;QAvBZ,eAAU,GAAsB,IAAI,CAAC;QAwBjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,UAAuB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CAAC,UAAuB;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAAC,UAAuB;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACI,cAAc,CAAC,UAAuB;QACzC,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,UAAuB;QACnC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAAC,UAAuB;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;OAOG;IACI,aAAa,CAAC,QAAgB,EAAE,UAAuB;QAC1D,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,YAAoB;QACtC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,SAAyB;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAC7C,IAAI,CAAC,WAAW,CAAC,SAAS,EAC1B,KAAK,EACL,SAAS,CACZ,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,eAAe,CAAC,YAAoB;QACvC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,SAAyB;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAC9C,IAAI,CAAC,YAAY,CAAC,SAAS,EAC3B,KAAK,EACL,SAAS,CACZ,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,iBAAyB,EAAE,KAAa,EAAE,OAA0B,EAAE,WAAuC,IAAI;QACjI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,iBAAyB,EAAE,KAAa,EAAE,OAA0B,EAAE,WAAuC,IAAI;QAChI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjF,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,iBAAyB,EAAE,KAAa,EAAE,OAA0B,EAAE,WAAuC,IAAI;QACjI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,UAA4B,EAAE,OAA0B,EAAE,WAAuC,IAAI;QAClH,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,UAA4B,EAAE,OAA0B,EAAE,WAAuC,IAAI;QACjH,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,UAA4B,EAAE,OAA0B,EAAE,WAAuC,IAAI;QAClH,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;;OAQG;IACK,aAAa,CAAC,QAAgB,EAAE,iBAAyB,EAAE,KAAa,EAAE,OAA0B,EAAE,WAAuC,IAAI;QACrJ,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAAC,QAAgB,EAAE,UAA4B,EAAE,OAA0B,EAAE,WAAuC,IAAI;QACtI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC1E,CAAC;QAED,gCAAgC;QAChC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEhE,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,aAAa,GAA0B,IAAI,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC/F,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAC7B,QAAQ,CAAC,KAAK,EACd,GAAG,EACH,IAAI,eAAe,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CACpD,CAAC;gBACF,IAAI,aAAa,EAAE,CAAC;oBAChB,aAAa,GAAG,IAAI,gBAAgB,CAChC,aAAa,EACb,KAAK,EACL,IAAI,CACP,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,aAAa,GAAG,IAAI,CAAC;gBACzB,CAAC;gBACD,KAAK,EAAE,CAAC;YACZ,CAAC;QACL,CAAC;QAED,IAAI,CAAC,aAAa,IAAI,KAAK,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,iEAAiE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAE7E,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAED,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,uEAAuE;IACvE,+DAA+D;IACxD,QAAQ,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,IAAI,gBAAgB,CACvB,IAAI,cAAc,CAAC,IAAI,CAAC,EACxB,IAAI,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CACzC,CAAC;IACN,CAAC;IAEM,UAAU,CAAC,WAAwC;QACtD,uCAAuC;QACvC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAAC,OAAe,EAAE,KAAa;QAC/C,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;OAUG;IACI,sBAAsB,CAAC,UAAkB,EAAE,EAA4B;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,MAAK,UAAU,CAAA,EAAA,CAAC,CAAC;QAC3F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,yBAAyB,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,qBAAqB,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACI,eAAe,CAClB,UAAkB,EAClB,WAAqC,EACrC,OAAgC;QAEhC,8EAA8E;QAC9E,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9B,6DAA6D;YAC7D,iDAAiD;YACjD,MAAM,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YAClC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,+CAA+C,UAAU,GAAG,CAAC,CAAC;gBAClF,CAAC;gBACD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,kCAAkC;YAClC,MAAM,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,+CAA+C,UAAU,GAAG,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,IAAY,EAAE,KAAU;QACxC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;;AAraM,sBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,AAAxB,CAAyB"}
|
@@ -16,7 +16,15 @@ ValueList.kind = Symbol("ValueList");
|
|
16
16
|
export class ColumnReference extends SqlComponent {
|
17
17
|
constructor(namespaces, column) {
|
18
18
|
super();
|
19
|
-
|
19
|
+
if (typeof namespaces === "string") {
|
20
|
+
this.namespaces = [new IdentifierString(namespaces)];
|
21
|
+
}
|
22
|
+
else if (Array.isArray(namespaces)) {
|
23
|
+
this.namespaces = namespaces.map((namespace) => new IdentifierString(namespace));
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
this.namespaces = null;
|
27
|
+
}
|
20
28
|
this.column = new IdentifierString(column);
|
21
29
|
}
|
22
30
|
toString() {
|
@@ -116,9 +124,11 @@ export class LiteralValue extends SqlComponent {
|
|
116
124
|
}
|
117
125
|
LiteralValue.kind = Symbol("LiteralExpression");
|
118
126
|
export class ParameterExpression extends SqlComponent {
|
119
|
-
constructor(name) {
|
127
|
+
constructor(name, value = null) {
|
120
128
|
super();
|
121
129
|
this.name = new RawString(name);
|
130
|
+
this.value = value;
|
131
|
+
this.index = null;
|
122
132
|
}
|
123
133
|
}
|
124
134
|
ParameterExpression.kind = Symbol("ParameterExpression");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ValueComponent.js","sourceRoot":"","sources":["../../../src/models/ValueComponent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAuB9C,MAAM,OAAO,WAAY,SAAQ,YAAY;IAGzC,YAAY,WAAwB;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;;AALM,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAQxC,MAAM,OAAO,SAAU,SAAQ,YAAY;IAGvC,YAAY,MAAwB;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;;AALM,cAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAQtC,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAM7C,YAAY,
|
1
|
+
{"version":3,"file":"ValueComponent.js","sourceRoot":"","sources":["../../../src/models/ValueComponent.ts"],"names":[],"mappings":"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"}
|
@@ -1,11 +1,26 @@
|
|
1
|
+
import { ParameterHelper } from "../utils/ParameterHelper";
|
2
|
+
import { QueryBuilder } from "../transformers/QueryBuilder";
|
1
3
|
import { SqlComponent } from "./SqlComponent";
|
2
4
|
/**
|
3
5
|
* Represents a VALUES query in SQL.
|
4
6
|
*/
|
5
7
|
export class ValuesQuery extends SqlComponent {
|
6
|
-
constructor(tuples) {
|
8
|
+
constructor(tuples, columnAliases = null) {
|
7
9
|
super();
|
8
10
|
this.tuples = tuples;
|
11
|
+
this.columnAliases = columnAliases;
|
12
|
+
}
|
13
|
+
toSimpleSelectQuery() {
|
14
|
+
return QueryBuilder.buildSimpleQuery(this);
|
15
|
+
}
|
16
|
+
/**
|
17
|
+
* Sets the value of a parameter by name in this query.
|
18
|
+
* @param name Parameter name
|
19
|
+
* @param value Value to set
|
20
|
+
*/
|
21
|
+
setParameter(name, value) {
|
22
|
+
ParameterHelper.set(this, name, value);
|
23
|
+
return this;
|
9
24
|
}
|
10
25
|
}
|
11
26
|
ValuesQuery.kind = Symbol("ValuesQuery");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ValuesQuery.js","sourceRoot":"","sources":["../../../src/models/ValuesQuery.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"ValuesQuery.js","sourceRoot":"","sources":["../../../src/models/ValuesQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,YAAY;IAUzC,YAAY,MAAyB,EAAE,gBAAiC,IAAI;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAEM,mBAAmB;QACtB,OAAO,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;SAIK;IACE,YAAY,CAAC,IAAY,EAAE,KAAU;QACxC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;;AA3BM,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
@@ -3,8 +3,16 @@ import { LiteralValue, RawString, IdentifierString, ColumnReference, FunctionCal
|
|
3
3
|
import { CommonTable, Distinct, DistinctOn, FetchSpecification, FetchType, ForClause, FromClause, FunctionSource, GroupByClause, HavingClause, JoinClause, JoinOnClause, JoinUsingClause, LimitClause, NullsSortDirection, OrderByClause, OrderByItem, PartitionByClause, SelectClause, SelectItem, SortDirection, SourceAliasExpression, SourceExpression, SubQuerySource, TableSource, WhereClause, WindowFrameClause, WithClause } from "../models/Clause";
|
4
4
|
import { CreateTableQuery } from "../models/CreateTableQuery";
|
5
5
|
import { InsertQuery } from "../models/InsertQuery";
|
6
|
+
import { ParameterCollector } from "./ParameterCollector";
|
7
|
+
export var ParameterStyle;
|
8
|
+
(function (ParameterStyle) {
|
9
|
+
ParameterStyle["Anonymous"] = "anonymous";
|
10
|
+
ParameterStyle["Indexed"] = "indexed";
|
11
|
+
ParameterStyle["Named"] = "named";
|
12
|
+
})(ParameterStyle || (ParameterStyle = {}));
|
6
13
|
export class Formatter {
|
7
14
|
constructor() {
|
15
|
+
this.parameterIndex = 0;
|
8
16
|
this.handlers = new Map();
|
9
17
|
// Default settings
|
10
18
|
this.config = {
|
@@ -13,6 +21,7 @@ export class Formatter {
|
|
13
21
|
end: '"'
|
14
22
|
},
|
15
23
|
parameterSymbol: ':',
|
24
|
+
parameterStyle: ParameterStyle.Named,
|
16
25
|
};
|
17
26
|
// value
|
18
27
|
this.handlers.set(LiteralValue.kind, (expr) => this.visitLiteralExpression(expr));
|
@@ -90,12 +99,47 @@ export class Formatter {
|
|
90
99
|
* @returns The formatted SQL string.
|
91
100
|
*/
|
92
101
|
format(arg, config = null) {
|
102
|
+
this.parameterIndex = 0; // Reset counter for each format
|
93
103
|
if (config) {
|
94
104
|
// Always reset to default before merging user config
|
95
105
|
this.config = Object.assign({ identifierEscape: { start: '"', end: '"' }, parameterSymbol: ':' }, config);
|
96
106
|
}
|
97
107
|
return this.visit(arg);
|
98
108
|
}
|
109
|
+
formatWithParameters(arg, config = null) {
|
110
|
+
var _a;
|
111
|
+
const sql = this.format(arg, config); // Sort parameters by index
|
112
|
+
const paramsRaw = ParameterCollector.collect(arg).sort((a, b) => { var _a, _b; return ((_a = a.index) !== null && _a !== void 0 ? _a : 0) - ((_b = b.index) !== null && _b !== void 0 ? _b : 0); });
|
113
|
+
const style = ((_a = this.config.parameterStyle) !== null && _a !== void 0 ? _a : ParameterStyle.Named);
|
114
|
+
if (style === ParameterStyle.Named) {
|
115
|
+
// Named: { name: value, ... }
|
116
|
+
const paramsObj = {};
|
117
|
+
for (const p of paramsRaw) {
|
118
|
+
const key = p.name.value;
|
119
|
+
if (paramsObj.hasOwnProperty(key)) {
|
120
|
+
if (paramsObj[key] !== p.value) {
|
121
|
+
throw new Error(`Duplicate parameter name '${key}' with different values detected during query composition.`);
|
122
|
+
}
|
123
|
+
// If value is the same, skip (already set)
|
124
|
+
continue;
|
125
|
+
}
|
126
|
+
paramsObj[key] = p.value;
|
127
|
+
}
|
128
|
+
return { sql, params: paramsObj };
|
129
|
+
}
|
130
|
+
else if (style === ParameterStyle.Indexed) {
|
131
|
+
// Indexed: [value1, value2, ...] (sorted by index)
|
132
|
+
const paramsArr = paramsRaw.map(p => p.value);
|
133
|
+
return { sql, params: paramsArr };
|
134
|
+
}
|
135
|
+
else if (style === ParameterStyle.Anonymous) {
|
136
|
+
// Anonymous: [value1, value2, ...] (sorted by index, name is empty)
|
137
|
+
const paramsArr = paramsRaw.map(p => p.value);
|
138
|
+
return { sql, params: paramsArr };
|
139
|
+
}
|
140
|
+
// Fallback (just in case)
|
141
|
+
return { sql, params: [] };
|
142
|
+
}
|
99
143
|
/**
|
100
144
|
* Visitor entry point for SQL AST nodes.
|
101
145
|
* Note: This method is public only for interface compatibility.
|
@@ -314,17 +358,23 @@ export class Formatter {
|
|
314
358
|
return arg.value.toString();
|
315
359
|
}
|
316
360
|
visitParameterExpression(arg) {
|
317
|
-
var _a;
|
318
|
-
//
|
319
|
-
|
320
|
-
|
361
|
+
var _a, _b;
|
362
|
+
// update index
|
363
|
+
arg.index = this.parameterIndex;
|
364
|
+
this.parameterIndex++;
|
365
|
+
// Decide output style based on config
|
366
|
+
const style = (_a = this.config.parameterStyle) !== null && _a !== void 0 ? _a : ParameterStyle.Named;
|
367
|
+
if (style === ParameterStyle.Anonymous) {
|
321
368
|
return '?';
|
322
369
|
}
|
370
|
+
if (style === ParameterStyle.Indexed) {
|
371
|
+
return `$${arg.index + 1}`; // 0-based to 1-based
|
372
|
+
}
|
373
|
+
// Named (default)
|
323
374
|
if (typeof this.config.parameterSymbol === 'object' && this.config.parameterSymbol !== null) {
|
324
375
|
return `${this.config.parameterSymbol.start}${arg.name.accept(this)}${this.config.parameterSymbol.end}`;
|
325
376
|
}
|
326
|
-
|
327
|
-
return `${(_a = this.config.parameterSymbol) !== null && _a !== void 0 ? _a : ':'}${arg.name.accept(this)}`;
|
377
|
+
return `${(_b = this.config.parameterSymbol) !== null && _b !== void 0 ? _b : ':'}${arg.name.accept(this)}`;
|
328
378
|
}
|
329
379
|
visitSelectItemExpression(arg) {
|
330
380
|
if (arg.identifier) {
|
@@ -513,22 +563,22 @@ Formatter.PRESETS = {
|
|
513
563
|
mysql: {
|
514
564
|
identifierEscape: { start: '`', end: '`' },
|
515
565
|
parameterSymbol: '?',
|
516
|
-
|
566
|
+
parameterStyle: ParameterStyle.Anonymous,
|
517
567
|
},
|
518
568
|
postgres: {
|
519
569
|
identifierEscape: { start: '"', end: '"' },
|
520
570
|
parameterSymbol: ':',
|
521
|
-
|
571
|
+
parameterStyle: ParameterStyle.Indexed,
|
522
572
|
},
|
523
573
|
sqlserver: {
|
524
574
|
identifierEscape: { start: '[', end: ']' },
|
525
575
|
parameterSymbol: '@',
|
526
|
-
|
576
|
+
parameterStyle: ParameterStyle.Named,
|
527
577
|
},
|
528
578
|
sqlite: {
|
529
579
|
identifierEscape: { start: '"', end: '"' },
|
530
580
|
parameterSymbol: ':',
|
531
|
-
|
581
|
+
parameterStyle: ParameterStyle.Named,
|
532
582
|
},
|
533
583
|
};
|
534
584
|
//# sourceMappingURL=Formatter.js.map
|