rawsql-ts 0.2.0-beta → 0.4.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.
Files changed (108) hide show
  1. package/README.md +134 -11
  2. package/dist/esm/index.js +2 -1
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/models/BinarySelectQuery.js +0 -2
  5. package/dist/esm/models/BinarySelectQuery.js.map +1 -1
  6. package/dist/esm/models/CreateTableQuery.js +62 -0
  7. package/dist/esm/models/CreateTableQuery.js.map +1 -0
  8. package/dist/esm/models/InsertQuery.js +24 -0
  9. package/dist/esm/models/InsertQuery.js.map +1 -0
  10. package/dist/esm/models/SelectQuery.js +2 -1
  11. package/dist/esm/models/SelectQuery.js.map +1 -1
  12. package/dist/esm/models/SimpleSelectQuery.js +2 -2
  13. package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
  14. package/dist/esm/models/ValueComponent.js +9 -1
  15. package/dist/esm/models/ValueComponent.js.map +1 -1
  16. package/dist/esm/models/ValuesQuery.js +6 -1
  17. package/dist/esm/models/ValuesQuery.js.map +1 -1
  18. package/dist/esm/parsers/IdentifierParser.js +3 -2
  19. package/dist/esm/parsers/IdentifierParser.js.map +1 -1
  20. package/dist/esm/parsers/InsertQueryParser.js +104 -0
  21. package/dist/esm/parsers/InsertQueryParser.js.map +1 -0
  22. package/dist/esm/parsers/ParameterExpressionParser.js +11 -2
  23. package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -1
  24. package/dist/esm/parsers/SelectQueryParser.js +1 -1
  25. package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
  26. package/dist/esm/parsers/SourceParser.js +8 -26
  27. package/dist/esm/parsers/SourceParser.js.map +1 -1
  28. package/dist/esm/parsers/ValueParser.js +14 -1
  29. package/dist/esm/parsers/ValueParser.js.map +1 -1
  30. package/dist/esm/tokenReaders/ParameterTokenReader.js +21 -1
  31. package/dist/esm/tokenReaders/ParameterTokenReader.js.map +1 -1
  32. package/dist/esm/transformers/Formatter.js +76 -4
  33. package/dist/esm/transformers/Formatter.js.map +1 -1
  34. package/dist/esm/transformers/QueryBuilder.js +170 -0
  35. package/dist/esm/transformers/QueryBuilder.js.map +1 -0
  36. package/dist/esm/types/index.d.ts +2 -1
  37. package/dist/esm/types/models/CreateTableQuery.d.ts +27 -0
  38. package/dist/esm/types/models/InsertQuery.d.ts +21 -0
  39. package/dist/esm/types/models/SelectQuery.d.ts +3 -2
  40. package/dist/esm/types/models/ValueComponent.d.ts +1 -1
  41. package/dist/esm/types/models/ValuesQuery.d.ts +9 -1
  42. package/dist/esm/types/parsers/InsertQueryParser.d.ts +17 -0
  43. package/dist/esm/types/tokenReaders/ParameterTokenReader.d.ts +2 -1
  44. package/dist/esm/types/transformers/Formatter.d.ts +19 -2
  45. package/dist/esm/types/transformers/QueryBuilder.d.ts +54 -0
  46. package/dist/esm/types/utils/extractNamespacesAndName.d.ts +5 -0
  47. package/dist/esm/types/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +9 -0
  48. package/dist/esm/utils/extractNamespacesAndName.js +16 -0
  49. package/dist/esm/utils/extractNamespacesAndName.js.map +1 -0
  50. package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js +39 -0
  51. package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +1 -0
  52. package/dist/index.d.ts +2 -1
  53. package/dist/index.js +2 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/models/BinarySelectQuery.js +0 -2
  56. package/dist/models/BinarySelectQuery.js.map +1 -1
  57. package/dist/models/CreateTableQuery.d.ts +27 -0
  58. package/dist/models/CreateTableQuery.js +66 -0
  59. package/dist/models/CreateTableQuery.js.map +1 -0
  60. package/dist/models/InsertQuery.d.ts +21 -0
  61. package/dist/models/InsertQuery.js +28 -0
  62. package/dist/models/InsertQuery.js.map +1 -0
  63. package/dist/models/SelectQuery.d.ts +3 -2
  64. package/dist/models/SelectQuery.js +3 -1
  65. package/dist/models/SelectQuery.js.map +1 -1
  66. package/dist/models/SimpleSelectQuery.js +2 -2
  67. package/dist/models/SimpleSelectQuery.js.map +1 -1
  68. package/dist/models/ValueComponent.d.ts +1 -1
  69. package/dist/models/ValueComponent.js +9 -1
  70. package/dist/models/ValueComponent.js.map +1 -1
  71. package/dist/models/ValuesQuery.d.ts +9 -1
  72. package/dist/models/ValuesQuery.js +6 -1
  73. package/dist/models/ValuesQuery.js.map +1 -1
  74. package/dist/parsers/IdentifierParser.js +3 -2
  75. package/dist/parsers/IdentifierParser.js.map +1 -1
  76. package/dist/parsers/InsertQueryParser.d.ts +17 -0
  77. package/dist/parsers/InsertQueryParser.js +108 -0
  78. package/dist/parsers/InsertQueryParser.js.map +1 -0
  79. package/dist/parsers/ParameterExpressionParser.js +11 -2
  80. package/dist/parsers/ParameterExpressionParser.js.map +1 -1
  81. package/dist/parsers/SelectQueryParser.js +1 -1
  82. package/dist/parsers/SelectQueryParser.js.map +1 -1
  83. package/dist/parsers/SourceParser.js +8 -26
  84. package/dist/parsers/SourceParser.js.map +1 -1
  85. package/dist/parsers/ValueParser.js +14 -1
  86. package/dist/parsers/ValueParser.js.map +1 -1
  87. package/dist/tokenReaders/ParameterTokenReader.d.ts +2 -1
  88. package/dist/tokenReaders/ParameterTokenReader.js +21 -1
  89. package/dist/tokenReaders/ParameterTokenReader.js.map +1 -1
  90. package/dist/transformers/Formatter.d.ts +19 -2
  91. package/dist/transformers/Formatter.js +76 -4
  92. package/dist/transformers/Formatter.js.map +1 -1
  93. package/dist/transformers/QueryBuilder.d.ts +54 -0
  94. package/dist/transformers/QueryBuilder.js +174 -0
  95. package/dist/transformers/QueryBuilder.js.map +1 -0
  96. package/dist/utils/extractNamespacesAndName.d.ts +5 -0
  97. package/dist/utils/extractNamespacesAndName.js +18 -0
  98. package/dist/utils/extractNamespacesAndName.js.map +1 -0
  99. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +9 -0
  100. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js +42 -0
  101. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +1 -0
  102. package/package.json +1 -1
  103. package/dist/esm/transformers/QueryConverter.js +0 -115
  104. package/dist/esm/transformers/QueryConverter.js.map +0 -1
  105. package/dist/esm/types/transformers/QueryConverter.d.ts +0 -41
  106. package/dist/transformers/QueryConverter.d.ts +0 -41
  107. package/dist/transformers/QueryConverter.js +0 -119
  108. package/dist/transformers/QueryConverter.js.map +0 -1
@@ -0,0 +1,170 @@
1
+ import { FromClause, SelectClause, SelectItem, SourceAliasExpression, SourceExpression, SubQuerySource } from "../models/Clause";
2
+ import { BinarySelectQuery, SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
3
+ import { ColumnReference } from "../models/ValueComponent";
4
+ import { CTENormalizer } from "./CTENormalizer";
5
+ import { CreateTableQuery } from "../models/CreateTableQuery";
6
+ import { InsertQuery } from "../models/InsertQuery";
7
+ import { SelectValueCollector } from "./SelectValueCollector";
8
+ /**
9
+ * QueryBuilder provides static methods to build or convert various SQL query objects.
10
+ */
11
+ export class QueryBuilder {
12
+ /**
13
+ * Builds a BinarySelectQuery by combining an array of SelectQuery using the specified operator.
14
+ * Throws if less than two queries are provided.
15
+ * @param queries Array of SelectQuery to combine
16
+ * @param operator SQL operator to use (e.g. 'union', 'union all', 'intersect', 'except')
17
+ * @returns BinarySelectQuery
18
+ */
19
+ static buildBinaryQuery(queries, operator) {
20
+ if (!queries || queries.length === 0) {
21
+ throw new Error("No queries provided to combine.");
22
+ }
23
+ if (queries.length === 1) {
24
+ throw new Error("At least two queries are required to create a BinarySelectQuery.");
25
+ }
26
+ // Always create a new BinarySelectQuery instance (never mutate input)
27
+ const wrap = (q) => q instanceof ValuesQuery ? QueryBuilder.buildSimpleQuery(q) : q;
28
+ let result = new BinarySelectQuery(wrap(queries[0]), operator, wrap(queries[1]));
29
+ CTENormalizer.normalize(result);
30
+ for (let i = 2; i < queries.length; i++) {
31
+ result.appendSelectQuery(operator, wrap(queries[i]));
32
+ }
33
+ return result;
34
+ }
35
+ constructor() {
36
+ // This class is not meant to be instantiated.
37
+ }
38
+ /**
39
+ * Converts a SELECT query to a standard SimpleSelectQuery form.
40
+ * @param query The query to convert
41
+ * @returns A SimpleSelectQuery
42
+ */
43
+ static buildSimpleQuery(query) {
44
+ if (query instanceof SimpleSelectQuery) {
45
+ return query;
46
+ }
47
+ else if (query instanceof BinarySelectQuery) {
48
+ return QueryBuilder.buildSimpleBinaryQuery(query);
49
+ }
50
+ else if (query instanceof ValuesQuery) {
51
+ return QueryBuilder.buildSimpleValuesQuery(query);
52
+ }
53
+ throw new Error("Unsupported query type for buildSimpleQuery");
54
+ }
55
+ static buildSimpleBinaryQuery(query) {
56
+ // Create a subquery source from the binary query
57
+ const subQuerySource = new SubQuerySource(query);
58
+ // Create a source expression with alias
59
+ const sourceExpr = new SourceExpression(subQuerySource, new SourceAliasExpression("bq", null));
60
+ // Create FROM clause with the source expression
61
+ const fromClause = new FromClause(sourceExpr, null);
62
+ // Create SELECT clause with * (all columns)
63
+ const selectClause = QueryBuilder.createSelectAllClause();
64
+ // Create the final simple select query
65
+ const q = new SimpleSelectQuery(null, // No WITH clause
66
+ selectClause, fromClause, null, // No WHERE
67
+ null, // No GROUP BY
68
+ null, // No HAVING
69
+ null, // No ORDER BY
70
+ null, // No WINDOW
71
+ null, // No LIMIT
72
+ null // No FOR
73
+ );
74
+ return CTENormalizer.normalize(q);
75
+ }
76
+ /**
77
+ * Converts a ValuesQuery to a SimpleSelectQuery with sequentially numbered columns or user-specified columns
78
+ *
79
+ * @param query The VALUES query to convert
80
+ * @param columns Optional: column names
81
+ * @returns A SimpleSelectQuery
82
+ */
83
+ static buildSimpleValuesQuery(query) {
84
+ // Figure out how many columns are in the VALUES clause
85
+ const columnCount = query.tuples.length > 0 ? query.tuples[0].values.length : 0;
86
+ if (query.tuples.length === 0) {
87
+ throw new Error("Empty VALUES clause cannot be converted to a SimpleSelectQuery");
88
+ }
89
+ if (!query.columnAliases) {
90
+ throw new Error("Column aliases are required to convert a VALUES clause to SimpleSelectQuery. Please specify column aliases.");
91
+ }
92
+ if (query.columnAliases.length !== columnCount) {
93
+ throw new Error(`The number of column aliases (${query.columnAliases.length}) does not match the number of columns in the first tuple (${columnCount}).`);
94
+ }
95
+ // Create a subquery source from the VALUES query
96
+ const subQuerySource = new SubQuerySource(query);
97
+ const sourceExpr = new SourceExpression(subQuerySource, new SourceAliasExpression("vq", query.columnAliases));
98
+ // Create FROM clause with the source expression
99
+ const fromClause = new FromClause(sourceExpr, null);
100
+ // Create SELECT clause with all columns
101
+ const selectItems = query.columnAliases.map(name => new SelectItem(new ColumnReference("vq", name), name));
102
+ const selectClause = new SelectClause(selectItems, null);
103
+ // Create the final simple select query
104
+ return new SimpleSelectQuery(null, // No WITH clause
105
+ selectClause, fromClause, null, // No WHERE
106
+ null, // No GROUP BY
107
+ null, // No HAVING
108
+ null, // No ORDER BY
109
+ null, // No WINDOW
110
+ null, // No LIMIT
111
+ null // No FOR
112
+ );
113
+ }
114
+ /**
115
+ * Creates a SELECT clause with a single * (all columns) item
116
+ *
117
+ * @returns A SELECT clause with *
118
+ */
119
+ static createSelectAllClause() {
120
+ // Create a column reference for *
121
+ const columnRef = new ColumnReference(null, "*");
122
+ // Create a SelectItem with the column reference
123
+ const selectItem = new SelectItem(columnRef, "*");
124
+ // Create and return a SelectClause with the item
125
+ return new SelectClause([selectItem], null);
126
+ }
127
+ /**
128
+ * Converts a SELECT query to a CREATE TABLE query (CREATE [TEMPORARY] TABLE ... AS SELECT ...)
129
+ * @param query The SELECT query to use as the source
130
+ * @param tableName The name of the table to create
131
+ * @param isTemporary If true, creates a temporary table
132
+ * @returns A CreateTableQuery instance
133
+ */
134
+ static buildCreateTableQuery(query, tableName, isTemporary = false) {
135
+ return new CreateTableQuery({
136
+ tableName,
137
+ isTemporary,
138
+ asSelectQuery: query
139
+ });
140
+ }
141
+ /**
142
+ * Converts a SELECT query to an INSERT query (INSERT INTO ... SELECT ...)
143
+ * @param selectQuery The SELECT query to use as the source
144
+ * @param tableName The name of the table to insert into
145
+ * @param columns Optional: array of column names. If omitted, columns are inferred from the selectQuery
146
+ * @returns An InsertQuery instance
147
+ */
148
+ static buildInsertQuery(selectQuery, tableName) {
149
+ let cols;
150
+ const count = selectQuery.selectClause.items.length;
151
+ // Try to infer columns from the selectQuery
152
+ const collector = new SelectValueCollector();
153
+ const items = collector.collect(selectQuery);
154
+ cols = items.map(item => item.name);
155
+ if (!cols.length || count !== cols.length) {
156
+ throw new Error(`Columns cannot be inferred from the selectQuery. ` +
157
+ `Make sure you are not using wildcards or unnamed columns.\n` +
158
+ `Select clause column count: ${count}, ` +
159
+ `Columns with valid names: ${cols.length}\n` +
160
+ `Detected column names: [${cols.join(", ")}]`);
161
+ }
162
+ return new InsertQuery({
163
+ namespaces: null,
164
+ table: tableName,
165
+ columns: cols,
166
+ selectQuery: selectQuery
167
+ });
168
+ }
169
+ }
170
+ //# sourceMappingURL=QueryBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/transformers/QueryBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './parsers/SelectQueryParser';
2
+ export * from './parsers/InsertQueryParser';
2
3
  export * from './models/BinarySelectQuery';
3
4
  export * from './models/SelectQuery';
4
5
  export * from './models/ValueComponent';
@@ -6,7 +7,7 @@ export * from './models/ValuesQuery';
6
7
  export * from './transformers/CTECollector';
7
8
  export * from './transformers/CTENormalizer';
8
9
  export * from './transformers/Formatter';
9
- export * from './transformers/QueryConverter';
10
+ export * from './transformers/QueryBuilder';
10
11
  export * from './transformers/SelectValueCollector';
11
12
  export * from './transformers/SelectableColumnCollector';
12
13
  export * from './transformers/TableColumnResolver';
@@ -0,0 +1,27 @@
1
+ import { SqlComponent } from "./SqlComponent";
2
+ import type { SelectQuery } from "./SelectQuery";
3
+ import { IdentifierString } from "./ValueComponent";
4
+ import { SimpleSelectQuery } from "./SimpleSelectQuery";
5
+ export declare class CreateTableQuery extends SqlComponent {
6
+ /** SqlComponent kind symbol for visitor pattern */
7
+ static kind: symbol;
8
+ /** Table name (with optional schema) */
9
+ tableName: IdentifierString;
10
+ /** If true, this is a temporary table */
11
+ isTemporary: boolean;
12
+ /** Optional: SELECT query for AS SELECT ... */
13
+ asSelectQuery?: SelectQuery;
14
+ constructor(params: {
15
+ tableName: string;
16
+ isTemporary?: boolean;
17
+ asSelectQuery?: SelectQuery;
18
+ });
19
+ /**
20
+ * Returns a SelectQuery that selects all columns from this table.
21
+ */
22
+ getSelectQuery(): SimpleSelectQuery;
23
+ /**
24
+ * Returns a SelectQuery that counts all rows in this table.
25
+ */
26
+ getCountQuery(): SimpleSelectQuery;
27
+ }
@@ -0,0 +1,21 @@
1
+ import { SqlComponent } from "./SqlComponent";
2
+ import { IdentifierString } from "./ValueComponent";
3
+ import { SelectQuery } from "./SelectQuery";
4
+ export declare class InsertQuery extends SqlComponent {
5
+ static kind: symbol;
6
+ namespaces: IdentifierString[] | null;
7
+ table: IdentifierString;
8
+ columns: IdentifierString[];
9
+ selectQuery: SelectQuery | null;
10
+ /**
11
+ * @param params.table Table name (string or IdentifierString)
12
+ * @param params.columns Array of column names (string[] or IdentifierString[])
13
+ * @param params.selectQuery SELECT/VALUES query (required)
14
+ */
15
+ constructor(params: {
16
+ namespaces: (string | IdentifierString)[] | null;
17
+ table: string | IdentifierString;
18
+ columns: (string | IdentifierString)[];
19
+ selectQuery?: SelectQuery | null;
20
+ });
21
+ }
@@ -1,5 +1,6 @@
1
+ import { InsertQuery } from "./InsertQuery";
1
2
  import { SimpleSelectQuery } from "./SimpleSelectQuery";
2
3
  import { BinarySelectQuery } from "./BinarySelectQuery";
3
4
  import { ValuesQuery } from "./ValuesQuery";
4
- export type SelectQuery = SimpleSelectQuery | BinarySelectQuery | ValuesQuery;
5
- export { SimpleSelectQuery, BinarySelectQuery, ValuesQuery };
5
+ export type SelectQuery = SimpleSelectQuery | BinarySelectQuery | ValuesQuery | InsertQuery;
6
+ export { SimpleSelectQuery, BinarySelectQuery, ValuesQuery, InsertQuery };
@@ -16,7 +16,7 @@ export declare class ColumnReference extends SqlComponent {
16
16
  static kind: symbol;
17
17
  namespaces: IdentifierString[] | null;
18
18
  column: IdentifierString;
19
- constructor(namespaces: string[] | null, column: string);
19
+ constructor(namespaces: string | string[] | null, column: string);
20
20
  toString(): string;
21
21
  getNamespace(): string;
22
22
  }
@@ -1,3 +1,4 @@
1
+ import { SimpleSelectQuery } from "./SimpleSelectQuery";
1
2
  import { SqlComponent } from "./SqlComponent";
2
3
  import { TupleExpression } from "./ValueComponent";
3
4
  /**
@@ -6,5 +7,12 @@ import { TupleExpression } from "./ValueComponent";
6
7
  export declare class ValuesQuery extends SqlComponent {
7
8
  static kind: symbol;
8
9
  tuples: TupleExpression[];
9
- constructor(tuples: TupleExpression[]);
10
+ /**
11
+ * Column aliases for the VALUES query.
12
+ * These represent the logical column names for each value tuple.
13
+ * Note: This property is optional and is not referenced during SQL output, but is used when converting to a SimpleSelectQuery.
14
+ */
15
+ columnAliases: string[] | null;
16
+ constructor(tuples: TupleExpression[], columnAliases?: string[] | null);
17
+ toSimpleSelectQuery(): SimpleSelectQuery;
10
18
  }
@@ -0,0 +1,17 @@
1
+ import { InsertQuery } from "../models/InsertQuery";
2
+ import { Lexeme } from "../models/Lexeme";
3
+ export declare class InsertQueryParser {
4
+ /**
5
+ * Parse SQL string to InsertQuery AST.
6
+ * @param query SQL string
7
+ */
8
+ static parse(query: string): InsertQuery;
9
+ /**
10
+ * Parse from lexeme array (for internal use and tests)
11
+ */
12
+ static parseFromLexeme(lexemes: Lexeme[], index: number): {
13
+ value: InsertQuery;
14
+ newIndex: number;
15
+ };
16
+ private static parseFullQualifiedName;
17
+ }
@@ -1,9 +1,10 @@
1
1
  import { BaseTokenReader } from './BaseTokenReader';
2
2
  import { Lexeme } from '../models/Lexeme';
3
3
  /**
4
- * Reads SQL parameter tokens (@param, :param, $param, ?)
4
+ * Reads SQL parameter tokens (@param, :param, $param, ?, ${param})
5
5
  */
6
6
  export declare class ParameterTokenReader extends BaseTokenReader {
7
+ constructor(input: string);
7
8
  /**
8
9
  * Try to read a parameter token
9
10
  */
@@ -1,12 +1,24 @@
1
1
  import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
2
2
  interface FormatterConfig {
3
- identifierEscape: {
3
+ identifierEscape?: {
4
4
  start: string;
5
5
  end: string;
6
6
  };
7
- parameterSymbol: string;
7
+ parameterSymbol?: string | {
8
+ start: string;
9
+ end: string;
10
+ };
11
+ /**
12
+ * If false, named parameters are not supported (e.g. MySQL: use only '?').
13
+ * If true (default), named parameters are output (e.g. :userId, @userId).
14
+ */
15
+ supportNamedParameter?: boolean;
8
16
  }
9
17
  export declare class Formatter implements SqlComponentVisitor<string> {
18
+ /**
19
+ * Preset configs for common DB dialects.
20
+ */
21
+ static readonly PRESETS: Record<string, FormatterConfig>;
10
22
  private handlers;
11
23
  private config;
12
24
  constructor();
@@ -78,5 +90,10 @@ export declare class Formatter implements SqlComponentVisitor<string> {
78
90
  private visitIdentifierString;
79
91
  private visitValuesQuery;
80
92
  private visitTupleExpression;
93
+ /**
94
+ * Formats a CreateTableQuery into SQL string.
95
+ */
96
+ private visitCreateTableQuery;
97
+ private visitInsertQuery;
81
98
  }
82
99
  export {};
@@ -0,0 +1,54 @@
1
+ import { BinarySelectQuery, SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
2
+ import { CreateTableQuery } from "../models/CreateTableQuery";
3
+ import { InsertQuery } from "../models/InsertQuery";
4
+ /**
5
+ * QueryBuilder provides static methods to build or convert various SQL query objects.
6
+ */
7
+ export declare class QueryBuilder {
8
+ /**
9
+ * Builds a BinarySelectQuery by combining an array of SelectQuery using the specified operator.
10
+ * Throws if less than two queries are provided.
11
+ * @param queries Array of SelectQuery to combine
12
+ * @param operator SQL operator to use (e.g. 'union', 'union all', 'intersect', 'except')
13
+ * @returns BinarySelectQuery
14
+ */
15
+ static buildBinaryQuery(queries: SelectQuery[], operator: string): BinarySelectQuery;
16
+ private constructor();
17
+ /**
18
+ * Converts a SELECT query to a standard SimpleSelectQuery form.
19
+ * @param query The query to convert
20
+ * @returns A SimpleSelectQuery
21
+ */
22
+ static buildSimpleQuery(query: SelectQuery): SimpleSelectQuery;
23
+ private static buildSimpleBinaryQuery;
24
+ /**
25
+ * Converts a ValuesQuery to a SimpleSelectQuery with sequentially numbered columns or user-specified columns
26
+ *
27
+ * @param query The VALUES query to convert
28
+ * @param columns Optional: column names
29
+ * @returns A SimpleSelectQuery
30
+ */
31
+ private static buildSimpleValuesQuery;
32
+ /**
33
+ * Creates a SELECT clause with a single * (all columns) item
34
+ *
35
+ * @returns A SELECT clause with *
36
+ */
37
+ private static createSelectAllClause;
38
+ /**
39
+ * Converts a SELECT query to a CREATE TABLE query (CREATE [TEMPORARY] TABLE ... AS SELECT ...)
40
+ * @param query The SELECT query to use as the source
41
+ * @param tableName The name of the table to create
42
+ * @param isTemporary If true, creates a temporary table
43
+ * @returns A CreateTableQuery instance
44
+ */
45
+ static buildCreateTableQuery(query: SelectQuery, tableName: string, isTemporary?: boolean): CreateTableQuery;
46
+ /**
47
+ * Converts a SELECT query to an INSERT query (INSERT INTO ... SELECT ...)
48
+ * @param selectQuery The SELECT query to use as the source
49
+ * @param tableName The name of the table to insert into
50
+ * @param columns Optional: array of column names. If omitted, columns are inferred from the selectQuery
51
+ * @returns An InsertQuery instance
52
+ */
53
+ static buildInsertQuery(selectQuery: SimpleSelectQuery, tableName: string): InsertQuery;
54
+ }
@@ -0,0 +1,5 @@
1
+ declare function extractNamespacesAndName(identifiers: string[]): {
2
+ namespaces: string[] | null;
3
+ name: string;
4
+ };
5
+ export { extractNamespacesAndName };
@@ -0,0 +1,9 @@
1
+ import { Lexeme } from "../models/Lexeme";
2
+ /**
3
+ * Parses SQL Server-style escaped identifiers ([table]) and dot-separated identifiers.
4
+ * Returns the list of identifiers and the new index after parsing.
5
+ */
6
+ export declare function parseEscapedOrDotSeparatedIdentifiers(lexemes: Lexeme[], index: number): {
7
+ identifiers: string[];
8
+ newIndex: number;
9
+ };
@@ -0,0 +1,16 @@
1
+ // Utility to extract namespaces and the final name from an array of identifiers
2
+ // Example: ["db", "schema", "users"] => { namespaces: ["db", "schema"], name: "users" }
3
+ function extractNamespacesAndName(identifiers) {
4
+ if (!identifiers || identifiers.length === 0) {
5
+ throw new Error("Identifier list is empty");
6
+ }
7
+ if (identifiers.length === 1) {
8
+ return { namespaces: null, name: identifiers[0] };
9
+ }
10
+ return {
11
+ namespaces: identifiers.slice(0, -1),
12
+ name: identifiers[identifiers.length - 1]
13
+ };
14
+ }
15
+ export { extractNamespacesAndName };
16
+ //# sourceMappingURL=extractNamespacesAndName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractNamespacesAndName.js","sourceRoot":"","sources":["../../../src/utils/extractNamespacesAndName.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wFAAwF;AACxF,SAAS,wBAAwB,CAAC,WAAqB;IACnD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,OAAO;QACH,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;KAC5C,CAAC;AACN,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { TokenType } from "../models/Lexeme";
2
+ /**
3
+ * Parses SQL Server-style escaped identifiers ([table]) and dot-separated identifiers.
4
+ * Returns the list of identifiers and the new index after parsing.
5
+ */
6
+ export function parseEscapedOrDotSeparatedIdentifiers(lexemes, index) {
7
+ let idx = index;
8
+ const identifiers = [];
9
+ while (idx < lexemes.length) {
10
+ if (lexemes[idx].type & TokenType.OpenBracket) {
11
+ idx++; // skip [
12
+ if (idx >= lexemes.length || !(lexemes[idx].type & TokenType.Identifier)) {
13
+ throw new Error(`Expected identifier after '[' at position ${idx}`);
14
+ }
15
+ identifiers.push(lexemes[idx].value);
16
+ idx++;
17
+ if (idx >= lexemes.length || lexemes[idx].value !== "]") {
18
+ throw new Error(`Expected closing ']' after identifier at position ${idx}`);
19
+ }
20
+ idx++; // skip ]
21
+ }
22
+ else if (lexemes[idx].type & TokenType.Identifier) {
23
+ identifiers.push(lexemes[idx].value);
24
+ idx++;
25
+ }
26
+ else {
27
+ break;
28
+ }
29
+ // Handle dot for schema.table or db.schema.table
30
+ if (idx < lexemes.length && (lexemes[idx].type & TokenType.Dot)) {
31
+ idx++; // skip dot
32
+ }
33
+ else {
34
+ break;
35
+ }
36
+ }
37
+ return { identifiers, newIndex: idx };
38
+ }
39
+ //# sourceMappingURL=parseEscapedOrDotSeparatedIdentifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseEscapedOrDotSeparatedIdentifiers.js","sourceRoot":"","sources":["../../../src/utils/parseEscapedOrDotSeparatedIdentifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,qCAAqC,CAAC,OAAiB,EAAE,KAAa;IAClF,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YAC5C,GAAG,EAAE,CAAC,CAAC,SAAS;YAChB,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,EAAE,CAAC;YACN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,GAAG,EAAE,CAAC,CAAC,SAAS;QACpB,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,EAAE,CAAC;QACV,CAAC;aAAM,CAAC;YACJ,MAAM;QACV,CAAC;QACD,iDAAiD;QACjD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,GAAG,EAAE,CAAC,CAAC,WAAW;QACtB,CAAC;aAAM,CAAC;YACJ,MAAM;QACV,CAAC;IACL,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './parsers/SelectQueryParser';
2
+ export * from './parsers/InsertQueryParser';
2
3
  export * from './models/BinarySelectQuery';
3
4
  export * from './models/SelectQuery';
4
5
  export * from './models/ValueComponent';
@@ -6,7 +7,7 @@ export * from './models/ValuesQuery';
6
7
  export * from './transformers/CTECollector';
7
8
  export * from './transformers/CTENormalizer';
8
9
  export * from './transformers/Formatter';
9
- export * from './transformers/QueryConverter';
10
+ export * from './transformers/QueryBuilder';
10
11
  export * from './transformers/SelectValueCollector';
11
12
  export * from './transformers/SelectableColumnCollector';
12
13
  export * from './transformers/TableColumnResolver';
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  // Entry point for rawsql-ts package
18
18
  __exportStar(require("./parsers/SelectQueryParser"), exports);
19
+ __exportStar(require("./parsers/InsertQueryParser"), exports);
19
20
  __exportStar(require("./models/BinarySelectQuery"), exports);
20
21
  __exportStar(require("./models/SelectQuery"), exports);
21
22
  __exportStar(require("./models/ValueComponent"), exports);
@@ -23,7 +24,7 @@ __exportStar(require("./models/ValuesQuery"), exports);
23
24
  __exportStar(require("./transformers/CTECollector"), exports);
24
25
  __exportStar(require("./transformers/CTENormalizer"), exports);
25
26
  __exportStar(require("./transformers/Formatter"), exports);
26
- __exportStar(require("./transformers/QueryConverter"), exports);
27
+ __exportStar(require("./transformers/QueryBuilder"), exports); // old name:QueryConverter
27
28
  __exportStar(require("./transformers/SelectValueCollector"), exports);
28
29
  __exportStar(require("./transformers/SelectableColumnCollector"), exports);
29
30
  __exportStar(require("./transformers/TableColumnResolver"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,8DAA4C;AAE5C,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AACxC,uDAAqC;AAErC,8DAA4C;AAC5C,+DAA6C;AAC7C,2DAAyC;AACzC,gEAA8C;AAC9C,sEAAoD;AACpD,2EAAyD;AACzD,qEAAmD;AACnD,sEAAoD;AACpD,2EAAyD;AACzD,oEAAoE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,8DAA4C;AAC5C,8DAA4C;AAE5C,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AACxC,uDAAqC;AAErC,8DAA4C;AAC5C,+DAA6C;AAC7C,2DAAyC;AACzC,8DAA4C,CAAC,0BAA0B;AACvE,sEAAoD;AACpD,2EAAyD;AACzD,qEAAmD;AACnD,sEAAoD;AACpD,2EAAyD;AACzD,oEAAoE"}
@@ -95,8 +95,6 @@ class BinarySelectQuery extends SqlComponent_1.SqlComponent {
95
95
  this.left = new BinarySelectQuery(this.left, this.operator.value, this.right);
96
96
  this.operator = new ValueComponent_1.RawString(operator);
97
97
  this.right = query;
98
- // const normalizer = new CTENormalizer();
99
- // normalizer.normalize(this);
100
98
  CTENormalizer_1.CTENormalizer.normalize(this);
101
99
  return this;
102
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BinarySelectQuery.js","sourceRoot":"","sources":["../../src/models/BinarySelectQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BinarySelectQuery.js","sourceRoot":"","sources":["../../src/models/BinarySelectQuery.ts"],"names":[],"mappings":";;;AAAA,qCAAmF;AAEnF,iDAA8C;AAC9C,qDAA6C;AAC7C,iEAA8D;AAC9D,oEAAiE;AAEjE;;GAEG;AACH,MAAa,iBAAkB,SAAQ,2BAAY;IAM/C,YAAY,IAAiB,EAAE,QAAgB,EAAE,KAAkB;QAC/D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,KAAkB;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;OAOG;IACI,QAAQ,CAAC,KAAkB;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACI,SAAS,CAAC,KAAkB;QAC/B,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACI,YAAY,CAAC,KAAkB;QAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,KAAkB;QAC5B,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;OAOG;IACI,SAAS,CAAC,KAAkB;QAC/B,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;OAQG;IACI,iBAAiB,CAAC,QAAgB,EAAE,KAAkB;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,6BAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,QAAQ,CAAC,GAAW;QACvB,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IACM,WAAW,CAAC,GAAW;QAC1B,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IACM,YAAY,CAAC,GAAW;QAC3B,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IACM,eAAe,CAAC,GAAW;QAC9B,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IACM,SAAS,CAAC,GAAW;QACxB,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IACM,YAAY,CAAC,GAAW;QAC3B,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,uEAAuE;IACvE,mDAAmD;IAC5C,QAAQ,CAAC,QAAgB,MAAM;QAClC,OAAO,IAAI,yBAAgB,CACvB,IAAI,uBAAc,CAAC,IAAI,CAAC,EACxB,IAAI,8BAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CACzC,CAAC;IACN,CAAC;;AA9IL,8CA+IC;AA9IU,sBAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { SqlComponent } from "./SqlComponent";
2
+ import type { SelectQuery } from "./SelectQuery";
3
+ import { IdentifierString } from "./ValueComponent";
4
+ import { SimpleSelectQuery } from "./SimpleSelectQuery";
5
+ export declare class CreateTableQuery extends SqlComponent {
6
+ /** SqlComponent kind symbol for visitor pattern */
7
+ static kind: symbol;
8
+ /** Table name (with optional schema) */
9
+ tableName: IdentifierString;
10
+ /** If true, this is a temporary table */
11
+ isTemporary: boolean;
12
+ /** Optional: SELECT query for AS SELECT ... */
13
+ asSelectQuery?: SelectQuery;
14
+ constructor(params: {
15
+ tableName: string;
16
+ isTemporary?: boolean;
17
+ asSelectQuery?: SelectQuery;
18
+ });
19
+ /**
20
+ * Returns a SelectQuery that selects all columns from this table.
21
+ */
22
+ getSelectQuery(): SimpleSelectQuery;
23
+ /**
24
+ * Returns a SelectQuery that counts all rows in this table.
25
+ */
26
+ getCountQuery(): SimpleSelectQuery;
27
+ }