kysely 0.26.3 → 0.27.1
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 +2 -2
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
- package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.js +99 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/driver.js +1 -0
- package/dist/cjs/driver/runtime-driver.js +5 -1
- package/dist/cjs/driver/single-connection-provider.js +7 -8
- package/dist/cjs/expression/expression-builder.d.ts +66 -75
- package/dist/cjs/expression/expression-builder.js +8 -17
- package/dist/cjs/expression/expression-wrapper.d.ts +21 -11
- package/dist/cjs/expression/expression-wrapper.js +12 -0
- package/dist/cjs/helpers/mssql.d.ts +152 -0
- package/dist/cjs/helpers/mssql.js +160 -0
- package/dist/cjs/index.d.ts +7 -1
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/migration/migrator.js +12 -16
- package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
- package/dist/cjs/operation-node/add-index-node.js +31 -0
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
- package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/limit-node.d.ts +2 -3
- package/dist/cjs/operation-node/limit-node.js +1 -2
- package/dist/cjs/operation-node/offset-node.d.ts +2 -3
- package/dist/cjs/operation-node/offset-node.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +19 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +2 -0
- package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -1
- package/dist/cjs/operation-node/select-modifier-node.js +2 -1
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
- package/dist/cjs/parser/binary-operation-parser.js +1 -1
- package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
- package/dist/cjs/parser/reference-parser.d.ts +2 -1
- package/dist/cjs/parser/update-set-parser.d.ts +5 -2
- package/dist/cjs/parser/update-set-parser.js +13 -3
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +21 -4
- package/dist/cjs/query-builder/aggregate-function-builder.js +21 -0
- package/dist/cjs/query-builder/case-builder.d.ts +6 -5
- package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -7
- package/dist/cjs/query-builder/delete-query-builder.js +4 -3
- package/dist/cjs/query-builder/function-module.d.ts +96 -25
- package/dist/cjs/query-builder/function-module.js +17 -3
- package/dist/cjs/query-builder/having-interface.d.ts +3 -5
- package/dist/cjs/query-builder/insert-query-builder.d.ts +34 -12
- package/dist/cjs/query-builder/insert-query-builder.js +16 -5
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +8 -1
- package/dist/cjs/query-builder/json-path-builder.d.ts +5 -3
- package/dist/cjs/query-builder/json-path-builder.js +9 -3
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
- package/dist/cjs/query-builder/over-builder.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +49 -31
- package/dist/cjs/query-builder/select-query-builder.js +12 -10
- package/dist/cjs/query-builder/update-query-builder.d.ts +23 -7
- package/dist/cjs/query-builder/update-query-builder.js +4 -4
- package/dist/cjs/query-builder/where-interface.d.ts +3 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +73 -12
- package/dist/cjs/raw-builder/raw-builder.d.ts +11 -1
- package/dist/cjs/raw-builder/raw-builder.js +3 -0
- package/dist/cjs/raw-builder/sql.js +9 -2
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
- package/dist/cjs/schema/alter-table-builder.js +59 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
- package/dist/cjs/schema/column-definition-builder.js +27 -0
- package/dist/cjs/schema/create-index-builder.d.ts +23 -0
- package/dist/cjs/schema/create-index-builder.js +30 -0
- package/dist/cjs/schema/create-table-builder.d.ts +28 -2
- package/dist/cjs/schema/create-table-builder.js +38 -3
- package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/cjs/schema/unique-constraint-builder.js +24 -0
- package/dist/cjs/util/log.js +5 -1
- package/dist/cjs/util/object-utils.d.ts +2 -2
- package/dist/cjs/util/object-utils.js +1 -1
- package/dist/cjs/util/type-utils.d.ts +27 -19
- package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/esm/dialect/dialect-adapter-base.js +3 -0
- package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
- package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/esm/dialect/mssql/mssql-introspector.js +96 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/driver.js +1 -0
- package/dist/esm/driver/runtime-driver.js +5 -1
- package/dist/esm/driver/single-connection-provider.js +7 -8
- package/dist/esm/expression/expression-builder.d.ts +66 -75
- package/dist/esm/expression/expression-builder.js +10 -19
- package/dist/esm/expression/expression-wrapper.d.ts +21 -11
- package/dist/esm/expression/expression-wrapper.js +12 -0
- package/dist/esm/helpers/mssql.d.ts +152 -0
- package/dist/esm/helpers/mssql.js +155 -0
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/migration/migrator.js +12 -16
- package/dist/esm/operation-node/add-index-node.d.ts +21 -0
- package/dist/esm/operation-node/add-index-node.js +29 -0
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/create-index-node.d.ts +1 -0
- package/dist/esm/operation-node/create-table-node.d.ts +1 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
- package/dist/esm/operation-node/limit-node.d.ts +2 -3
- package/dist/esm/operation-node/limit-node.js +1 -2
- package/dist/esm/operation-node/offset-node.d.ts +2 -3
- package/dist/esm/operation-node/offset-node.js +1 -2
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +19 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +2 -0
- package/dist/esm/operation-node/select-modifier-node.d.ts +2 -1
- package/dist/esm/operation-node/select-modifier-node.js +2 -1
- package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/esm/operation-node/unique-constraint-node.js +8 -1
- package/dist/esm/parser/binary-operation-parser.js +1 -1
- package/dist/esm/parser/coalesce-parser.d.ts +12 -2
- package/dist/esm/parser/reference-parser.d.ts +2 -1
- package/dist/esm/parser/update-set-parser.d.ts +5 -2
- package/dist/esm/parser/update-set-parser.js +10 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +21 -4
- package/dist/esm/query-builder/aggregate-function-builder.js +21 -0
- package/dist/esm/query-builder/case-builder.d.ts +6 -5
- package/dist/esm/query-builder/delete-query-builder.d.ts +8 -7
- package/dist/esm/query-builder/delete-query-builder.js +4 -3
- package/dist/esm/query-builder/function-module.d.ts +96 -25
- package/dist/esm/query-builder/function-module.js +17 -3
- package/dist/esm/query-builder/having-interface.d.ts +3 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +34 -12
- package/dist/esm/query-builder/insert-query-builder.js +17 -6
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +8 -1
- package/dist/esm/query-builder/json-path-builder.d.ts +5 -3
- package/dist/esm/query-builder/json-path-builder.js +9 -3
- package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/esm/query-builder/on-conflict-builder.js +2 -7
- package/dist/esm/query-builder/over-builder.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +49 -31
- package/dist/esm/query-builder/select-query-builder.js +13 -11
- package/dist/esm/query-builder/update-query-builder.d.ts +23 -7
- package/dist/esm/query-builder/update-query-builder.js +5 -5
- package/dist/esm/query-builder/where-interface.d.ts +3 -3
- package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/esm/query-compiler/default-query-compiler.js +73 -12
- package/dist/esm/raw-builder/raw-builder.d.ts +11 -1
- package/dist/esm/raw-builder/raw-builder.js +3 -0
- package/dist/esm/raw-builder/sql.js +9 -2
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
- package/dist/esm/schema/alter-table-builder.d.ts +41 -1
- package/dist/esm/schema/alter-table-builder.js +59 -2
- package/dist/esm/schema/column-definition-builder.d.ts +25 -0
- package/dist/esm/schema/column-definition-builder.js +27 -0
- package/dist/esm/schema/create-index-builder.d.ts +23 -0
- package/dist/esm/schema/create-index-builder.js +30 -0
- package/dist/esm/schema/create-table-builder.d.ts +28 -2
- package/dist/esm/schema/create-table-builder.js +38 -3
- package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/esm/schema/unique-constraint-builder.js +21 -0
- package/dist/esm/util/log.js +5 -1
- package/dist/esm/util/object-utils.d.ts +2 -2
- package/dist/esm/util/object-utils.js +1 -1
- package/dist/esm/util/type-utils.d.ts +27 -19
- package/helpers/mssql.d.ts +1 -0
- package/helpers/mssql.js +1 -0
- package/package.json +15 -10
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jsonBuildObject = exports.jsonObjectFrom = exports.jsonArrayFrom = void 0;
|
|
4
|
+
const sql_js_1 = require("../raw-builder/sql.js");
|
|
5
|
+
/**
|
|
6
|
+
* An MS SQL Server helper for aggregating a subquery into a JSON array.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
9
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
10
|
+
*
|
|
11
|
+
* The plugin can be installed like this:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* const db = new Kysely({
|
|
15
|
+
* dialect: new MssqlDialect(config),
|
|
16
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* ### Examples
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* const result = await db
|
|
24
|
+
* .selectFrom('person')
|
|
25
|
+
* .select((eb) => [
|
|
26
|
+
* 'id',
|
|
27
|
+
* jsonArrayFrom(
|
|
28
|
+
* eb.selectFrom('pet')
|
|
29
|
+
* .select(['pet.id as pet_id', 'pet.name'])
|
|
30
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
31
|
+
* .orderBy('pet.name')
|
|
32
|
+
* .modifyEnd(sql`offset 0 rows`)
|
|
33
|
+
* ).as('pets')
|
|
34
|
+
* ])
|
|
35
|
+
* .execute()
|
|
36
|
+
*
|
|
37
|
+
* result[0].id
|
|
38
|
+
* result[0].pets[0].pet_id
|
|
39
|
+
* result[0].pets[0].name
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* The generated SQL (MS SQL Server):
|
|
43
|
+
*
|
|
44
|
+
* ```sql
|
|
45
|
+
* select "id", (
|
|
46
|
+
* select coalesce((select * from (
|
|
47
|
+
* select "pet"."id" as "pet_id", "pet"."name"
|
|
48
|
+
* from "pet"
|
|
49
|
+
* where "pet"."owner_id" = "person"."id"
|
|
50
|
+
* order by "pet"."name"
|
|
51
|
+
* offset 0 rows
|
|
52
|
+
* ) as "agg" for json path, include_null_values), '[]')
|
|
53
|
+
* ) as "pets"
|
|
54
|
+
* from "person"
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
function jsonArrayFrom(expr) {
|
|
58
|
+
return (0, sql_js_1.sql) `coalesce((select * from ${expr} as agg for json path, include_null_values), '[]')`;
|
|
59
|
+
}
|
|
60
|
+
exports.jsonArrayFrom = jsonArrayFrom;
|
|
61
|
+
/**
|
|
62
|
+
* An MS SQL Server helper for turning a subquery into a JSON object.
|
|
63
|
+
*
|
|
64
|
+
* The subquery must only return one row.
|
|
65
|
+
*
|
|
66
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
67
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
68
|
+
*
|
|
69
|
+
* The plugin can be installed like this:
|
|
70
|
+
*
|
|
71
|
+
* ```ts
|
|
72
|
+
* const db = new Kysely({
|
|
73
|
+
* dialect: new MssqlDialect(config),
|
|
74
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
75
|
+
* })
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* ### Examples
|
|
79
|
+
*
|
|
80
|
+
* ```ts
|
|
81
|
+
* const result = await db
|
|
82
|
+
* .selectFrom('person')
|
|
83
|
+
* .select((eb) => [
|
|
84
|
+
* 'id',
|
|
85
|
+
* jsonObjectFrom(
|
|
86
|
+
* eb.selectFrom('pet')
|
|
87
|
+
* .select(['pet.id as pet_id', 'pet.name'])
|
|
88
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
89
|
+
* .where('pet.is_favorite', '=', 1)
|
|
90
|
+
* ).as('favorite_pet')
|
|
91
|
+
* ])
|
|
92
|
+
* .execute()
|
|
93
|
+
*
|
|
94
|
+
* result[0].id
|
|
95
|
+
* result[0].favorite_pet.pet_id
|
|
96
|
+
* result[0].favorite_pet.name
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* The generated SQL (MS SQL Server):
|
|
100
|
+
*
|
|
101
|
+
* ```sql
|
|
102
|
+
* select "id", (
|
|
103
|
+
* select * from (
|
|
104
|
+
* select "pet"."id" as "pet_id", "pet"."name"
|
|
105
|
+
* from "pet"
|
|
106
|
+
* where "pet"."owner_id" = "person"."id"
|
|
107
|
+
* and "pet"."is_favorite" = @1
|
|
108
|
+
* ) as "agg" for json path, include_null_values, without_array_wrapper
|
|
109
|
+
* ) as "favorite_pet"
|
|
110
|
+
* from "person"
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
function jsonObjectFrom(expr) {
|
|
114
|
+
return (0, sql_js_1.sql) `(select * from ${expr} as agg for json path, include_null_values, without_array_wrapper)`;
|
|
115
|
+
}
|
|
116
|
+
exports.jsonObjectFrom = jsonObjectFrom;
|
|
117
|
+
/**
|
|
118
|
+
* The MS SQL Server `json_query` function, single argument variant.
|
|
119
|
+
*
|
|
120
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
121
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
122
|
+
*
|
|
123
|
+
* The plugin can be installed like this:
|
|
124
|
+
*
|
|
125
|
+
* ```ts
|
|
126
|
+
* const db = new Kysely({
|
|
127
|
+
* dialect: new MssqlDialect(config),
|
|
128
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
129
|
+
* })
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* ### Examples
|
|
133
|
+
*
|
|
134
|
+
* ```ts
|
|
135
|
+
* const result = await db
|
|
136
|
+
* .selectFrom('person')
|
|
137
|
+
* .select((eb) => [
|
|
138
|
+
* 'id',
|
|
139
|
+
* jsonBuildObject({
|
|
140
|
+
* first: eb.ref('first_name'),
|
|
141
|
+
* last: eb.ref('last_name'),
|
|
142
|
+
* full: eb.fn('concat', ['first_name', eb.val(' '), 'last_name'])
|
|
143
|
+
* }).as('name')
|
|
144
|
+
* ])
|
|
145
|
+
* .execute()
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* The generated SQL (MS SQL Server):
|
|
149
|
+
*
|
|
150
|
+
* ```sql
|
|
151
|
+
* select "id", json_query(
|
|
152
|
+
* '{"first":"'+"first_name"+',"last":"'+"last_name"+',"full":"'+concat("first_name", ' ', "last_name")+'"}'
|
|
153
|
+
* ) as "name"
|
|
154
|
+
* from "person"
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
function jsonBuildObject(obj) {
|
|
158
|
+
return (0, sql_js_1.sql) `json_query('{${sql_js_1.sql.join(Object.keys(obj).map((k) => (0, sql_js_1.sql) `"${sql_js_1.sql.raw(k)}":"'+${obj[k]}+'"`), (0, sql_js_1.sql) `,`)}}')`;
|
|
159
|
+
}
|
|
160
|
+
exports.jsonBuildObject = jsonBuildObject;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -72,6 +72,12 @@ export * from './dialect/postgres/postgres-dialect.js';
|
|
|
72
72
|
export * from './dialect/sqlite/sqlite-query-compiler.js';
|
|
73
73
|
export * from './dialect/sqlite/sqlite-introspector.js';
|
|
74
74
|
export * from './dialect/sqlite/sqlite-adapter.js';
|
|
75
|
+
export * from './dialect/mssql/mssql-adapter.js';
|
|
76
|
+
export * from './dialect/mssql/mssql-dialect-config.js';
|
|
77
|
+
export * from './dialect/mssql/mssql-dialect.js';
|
|
78
|
+
export * from './dialect/mssql/mssql-driver.js';
|
|
79
|
+
export * from './dialect/mssql/mssql-introspector.js';
|
|
80
|
+
export * from './dialect/mssql/mssql-query-compiler.js';
|
|
75
81
|
export * from './query-compiler/default-query-compiler.js';
|
|
76
82
|
export * from './query-compiler/query-compiler.js';
|
|
77
83
|
export * from './migration/migrator.js';
|
|
@@ -176,7 +182,7 @@ export * from './util/compilable.js';
|
|
|
176
182
|
export * from './util/explainable.js';
|
|
177
183
|
export * from './util/streamable.js';
|
|
178
184
|
export * from './util/log.js';
|
|
179
|
-
export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, } from './util/type-utils.js';
|
|
185
|
+
export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, Nullable, NotNull, } from './util/type-utils.js';
|
|
180
186
|
export * from './util/infer-result.js';
|
|
181
187
|
export { logOnce } from './util/log-once.js';
|
|
182
188
|
export { SelectExpression, SelectCallback, SelectArg, Selection, CallbackSelection, } from './parser/select-parser.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -90,6 +90,12 @@ __exportStar(require("./dialect/postgres/postgres-dialect.js"), exports);
|
|
|
90
90
|
__exportStar(require("./dialect/sqlite/sqlite-query-compiler.js"), exports);
|
|
91
91
|
__exportStar(require("./dialect/sqlite/sqlite-introspector.js"), exports);
|
|
92
92
|
__exportStar(require("./dialect/sqlite/sqlite-adapter.js"), exports);
|
|
93
|
+
__exportStar(require("./dialect/mssql/mssql-adapter.js"), exports);
|
|
94
|
+
__exportStar(require("./dialect/mssql/mssql-dialect-config.js"), exports);
|
|
95
|
+
__exportStar(require("./dialect/mssql/mssql-dialect.js"), exports);
|
|
96
|
+
__exportStar(require("./dialect/mssql/mssql-driver.js"), exports);
|
|
97
|
+
__exportStar(require("./dialect/mssql/mssql-introspector.js"), exports);
|
|
98
|
+
__exportStar(require("./dialect/mssql/mssql-query-compiler.js"), exports);
|
|
93
99
|
__exportStar(require("./query-compiler/default-query-compiler.js"), exports);
|
|
94
100
|
__exportStar(require("./query-compiler/query-compiler.js"), exports);
|
|
95
101
|
__exportStar(require("./migration/migrator.js"), exports);
|
|
@@ -220,10 +220,7 @@ class Migrator {
|
|
|
220
220
|
}
|
|
221
221
|
if (!(await this.#doesSchemaExists())) {
|
|
222
222
|
try {
|
|
223
|
-
await this.#props.db.schema
|
|
224
|
-
.createSchema(this.#migrationTableSchema)
|
|
225
|
-
.ifNotExists()
|
|
226
|
-
.execute();
|
|
223
|
+
await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));
|
|
227
224
|
}
|
|
228
225
|
catch (error) {
|
|
229
226
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create schema`
|
|
@@ -239,20 +236,15 @@ class Migrator {
|
|
|
239
236
|
if (!(await this.#doesTableExists(this.#migrationTable))) {
|
|
240
237
|
try {
|
|
241
238
|
if (this.#migrationTableSchema) {
|
|
242
|
-
await this.#props.db.schema
|
|
243
|
-
.createSchema(this.#migrationTableSchema)
|
|
244
|
-
.ifNotExists()
|
|
245
|
-
.execute();
|
|
239
|
+
await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));
|
|
246
240
|
}
|
|
247
|
-
await this.#props.db.schema
|
|
241
|
+
await this.#createIfNotExists(this.#props.db.schema
|
|
248
242
|
.withPlugin(this.#schemaPlugin)
|
|
249
243
|
.createTable(this.#migrationTable)
|
|
250
|
-
.ifNotExists()
|
|
251
244
|
.addColumn('name', 'varchar(255)', (col) => col.notNull().primaryKey())
|
|
252
245
|
// The migration run time as ISO string. This is not a real date type as we
|
|
253
246
|
// can't know which data type is supported by all future dialects.
|
|
254
|
-
.addColumn('timestamp', 'varchar(255)', (col) => col.notNull())
|
|
255
|
-
.execute();
|
|
247
|
+
.addColumn('timestamp', 'varchar(255)', (col) => col.notNull()));
|
|
256
248
|
}
|
|
257
249
|
catch (error) {
|
|
258
250
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|
@@ -267,13 +259,11 @@ class Migrator {
|
|
|
267
259
|
async #ensureMigrationLockTableExists() {
|
|
268
260
|
if (!(await this.#doesTableExists(this.#migrationLockTable))) {
|
|
269
261
|
try {
|
|
270
|
-
await this.#props.db.schema
|
|
262
|
+
await this.#createIfNotExists(this.#props.db.schema
|
|
271
263
|
.withPlugin(this.#schemaPlugin)
|
|
272
264
|
.createTable(this.#migrationLockTable)
|
|
273
|
-
.ifNotExists()
|
|
274
265
|
.addColumn('id', 'varchar(255)', (col) => col.notNull().primaryKey())
|
|
275
|
-
.addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0))
|
|
276
|
-
.execute();
|
|
266
|
+
.addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0)));
|
|
277
267
|
}
|
|
278
268
|
catch (error) {
|
|
279
269
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|
@@ -481,6 +471,12 @@ class Migrator {
|
|
|
481
471
|
}
|
|
482
472
|
return { results };
|
|
483
473
|
}
|
|
474
|
+
async #createIfNotExists(qb) {
|
|
475
|
+
if (this.#props.db.getExecutor().adapter.supportsCreateIfNotExists) {
|
|
476
|
+
qb = qb.ifNotExists();
|
|
477
|
+
}
|
|
478
|
+
await qb.execute();
|
|
479
|
+
}
|
|
484
480
|
}
|
|
485
481
|
exports.Migrator = Migrator;
|
|
486
482
|
class MigrationResultSetError extends Error {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IdentifierNode } from './identifier-node.js';
|
|
2
|
+
import { OperationNode } from './operation-node.js';
|
|
3
|
+
import { RawNode } from './raw-node.js';
|
|
4
|
+
export type AddIndexNodeProps = Omit<AddIndexNode, 'kind' | 'name'>;
|
|
5
|
+
export interface AddIndexNode extends OperationNode {
|
|
6
|
+
readonly kind: 'AddIndexNode';
|
|
7
|
+
readonly name: IdentifierNode;
|
|
8
|
+
readonly columns?: OperationNode[];
|
|
9
|
+
readonly unique?: boolean;
|
|
10
|
+
readonly using?: RawNode;
|
|
11
|
+
readonly ifNotExists?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export declare const AddIndexNode: Readonly<{
|
|
17
|
+
is(node: OperationNode): node is AddIndexNode;
|
|
18
|
+
create(name: string): AddIndexNode;
|
|
19
|
+
cloneWith(node: AddIndexNode, props: AddIndexNodeProps): AddIndexNode;
|
|
20
|
+
cloneWithColumns(node: AddIndexNode, columns: OperationNode[]): AddIndexNode;
|
|
21
|
+
}>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AddIndexNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const identifier_node_js_1 = require("./identifier-node.js");
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
exports.AddIndexNode = (0, object_utils_js_1.freeze)({
|
|
10
|
+
is(node) {
|
|
11
|
+
return node.kind === 'AddIndexNode';
|
|
12
|
+
},
|
|
13
|
+
create(name) {
|
|
14
|
+
return (0, object_utils_js_1.freeze)({
|
|
15
|
+
kind: 'AddIndexNode',
|
|
16
|
+
name: identifier_node_js_1.IdentifierNode.create(name)
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
cloneWith(node, props) {
|
|
20
|
+
return (0, object_utils_js_1.freeze)({
|
|
21
|
+
...node,
|
|
22
|
+
...props,
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
cloneWithColumns(node, columns) {
|
|
26
|
+
return (0, object_utils_js_1.freeze)({
|
|
27
|
+
...node,
|
|
28
|
+
columns: [...(node.columns || []), ...columns],
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
});
|
|
@@ -8,7 +8,9 @@ import { AlterColumnNode } from './alter-column-node.js';
|
|
|
8
8
|
import { AddConstraintNode } from './add-constraint-node.js';
|
|
9
9
|
import { DropConstraintNode } from './drop-constraint-node.js';
|
|
10
10
|
import { ModifyColumnNode } from './modify-column-node.js';
|
|
11
|
-
|
|
11
|
+
import { DropIndexNode } from './drop-index-node.js';
|
|
12
|
+
import { AddIndexNode } from './add-index-node.js';
|
|
13
|
+
export type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint' | 'addIndex' | 'dropIndex'>;
|
|
12
14
|
export type AlterTableColumnAlterationNode = RenameColumnNode | AddColumnNode | DropColumnNode | AlterColumnNode | ModifyColumnNode;
|
|
13
15
|
export interface AlterTableNode extends OperationNode {
|
|
14
16
|
readonly kind: 'AlterTableNode';
|
|
@@ -18,6 +20,8 @@ export interface AlterTableNode extends OperationNode {
|
|
|
18
20
|
readonly columnAlterations?: ReadonlyArray<AlterTableColumnAlterationNode>;
|
|
19
21
|
readonly addConstraint?: AddConstraintNode;
|
|
20
22
|
readonly dropConstraint?: DropConstraintNode;
|
|
23
|
+
readonly addIndex?: AddIndexNode;
|
|
24
|
+
readonly dropIndex?: DropIndexNode;
|
|
21
25
|
}
|
|
22
26
|
/**
|
|
23
27
|
* @internal
|
|
@@ -20,6 +20,7 @@ export interface ColumnDefinitionNode extends OperationNode {
|
|
|
20
20
|
readonly unsigned?: boolean;
|
|
21
21
|
readonly frontModifiers?: ReadonlyArray<OperationNode>;
|
|
22
22
|
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|
23
|
+
readonly nullsNotDistinct?: boolean;
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
25
26
|
* @internal
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { ColumnNode } from './column-node.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
3
2
|
export interface ColumnUpdateNode extends OperationNode {
|
|
4
3
|
readonly kind: 'ColumnUpdateNode';
|
|
5
|
-
readonly column:
|
|
4
|
+
readonly column: OperationNode;
|
|
6
5
|
readonly value: OperationNode;
|
|
7
6
|
}
|
|
8
7
|
/**
|
|
@@ -10,5 +9,5 @@ export interface ColumnUpdateNode extends OperationNode {
|
|
|
10
9
|
*/
|
|
11
10
|
export declare const ColumnUpdateNode: Readonly<{
|
|
12
11
|
is(node: OperationNode): node is ColumnUpdateNode;
|
|
13
|
-
create(column:
|
|
12
|
+
create(column: OperationNode, value: OperationNode): ColumnUpdateNode;
|
|
14
13
|
}>;
|
|
@@ -16,6 +16,7 @@ export interface CreateTableNode extends OperationNode {
|
|
|
16
16
|
readonly onCommit?: OnCommitAction;
|
|
17
17
|
readonly frontModifiers?: ReadonlyArray<OperationNode>;
|
|
18
18
|
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|
19
|
+
readonly selectQuery?: OperationNode;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* @internal
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
-
import { ValueNode } from './value-node.js';
|
|
3
2
|
export interface LimitNode extends OperationNode {
|
|
4
3
|
readonly kind: 'LimitNode';
|
|
5
|
-
readonly limit:
|
|
4
|
+
readonly limit: OperationNode;
|
|
6
5
|
}
|
|
7
6
|
/**
|
|
8
7
|
* @internal
|
|
9
8
|
*/
|
|
10
9
|
export declare const LimitNode: Readonly<{
|
|
11
10
|
is(node: OperationNode): node is LimitNode;
|
|
12
|
-
create(limit:
|
|
11
|
+
create(limit: OperationNode): LimitNode;
|
|
13
12
|
}>;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LimitNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const value_node_js_1 = require("./value-node.js");
|
|
6
5
|
/**
|
|
7
6
|
* @internal
|
|
8
7
|
*/
|
|
@@ -13,7 +12,7 @@ exports.LimitNode = (0, object_utils_js_1.freeze)({
|
|
|
13
12
|
create(limit) {
|
|
14
13
|
return (0, object_utils_js_1.freeze)({
|
|
15
14
|
kind: 'LimitNode',
|
|
16
|
-
limit
|
|
15
|
+
limit,
|
|
17
16
|
});
|
|
18
17
|
},
|
|
19
18
|
});
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
-
import { ValueNode } from './value-node.js';
|
|
3
2
|
export interface OffsetNode extends OperationNode {
|
|
4
3
|
readonly kind: 'OffsetNode';
|
|
5
|
-
readonly offset:
|
|
4
|
+
readonly offset: OperationNode;
|
|
6
5
|
}
|
|
7
6
|
/**
|
|
8
7
|
* @internal
|
|
9
8
|
*/
|
|
10
9
|
export declare const OffsetNode: Readonly<{
|
|
11
10
|
is(node: OperationNode): node is OffsetNode;
|
|
12
|
-
create(offset:
|
|
11
|
+
create(offset: OperationNode): OffsetNode;
|
|
13
12
|
}>;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OffsetNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const value_node_js_1 = require("./value-node.js");
|
|
6
5
|
/**
|
|
7
6
|
* @internal
|
|
8
7
|
*/
|
|
@@ -13,7 +12,7 @@ exports.OffsetNode = (0, object_utils_js_1.freeze)({
|
|
|
13
12
|
create(offset) {
|
|
14
13
|
return (0, object_utils_js_1.freeze)({
|
|
15
14
|
kind: 'OffsetNode',
|
|
16
|
-
offset
|
|
15
|
+
offset,
|
|
17
16
|
});
|
|
18
17
|
},
|
|
19
18
|
});
|
|
@@ -85,6 +85,7 @@ import { JSONPathNode } from './json-path-node.js';
|
|
|
85
85
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|
86
86
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|
87
87
|
import { TupleNode } from './tuple-node.js';
|
|
88
|
+
import { AddIndexNode } from './add-index-node.js';
|
|
88
89
|
/**
|
|
89
90
|
* Transforms an operation node tree into another one.
|
|
90
91
|
*
|
|
@@ -199,6 +200,7 @@ export declare class OperationNodeTransformer {
|
|
|
199
200
|
protected transformJSONPathLeg(node: JSONPathLegNode): JSONPathLegNode;
|
|
200
201
|
protected transformJSONOperatorChain(node: JSONOperatorChainNode): JSONOperatorChainNode;
|
|
201
202
|
protected transformTuple(node: TupleNode): TupleNode;
|
|
203
|
+
protected transformAddIndex(node: AddIndexNode): AddIndexNode;
|
|
202
204
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
203
205
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
204
206
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|
@@ -121,6 +121,7 @@ class OperationNodeTransformer {
|
|
|
121
121
|
JSONPathLegNode: this.transformJSONPathLeg.bind(this),
|
|
122
122
|
JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),
|
|
123
123
|
TupleNode: this.transformTuple.bind(this),
|
|
124
|
+
AddIndexNode: this.transformAddIndex.bind(this),
|
|
124
125
|
});
|
|
125
126
|
transformNode(node) {
|
|
126
127
|
if (!node) {
|
|
@@ -258,6 +259,7 @@ class OperationNodeTransformer {
|
|
|
258
259
|
ignore: node.ignore,
|
|
259
260
|
replace: node.replace,
|
|
260
261
|
explain: this.transformNode(node.explain),
|
|
262
|
+
defaultValues: node.defaultValues,
|
|
261
263
|
});
|
|
262
264
|
}
|
|
263
265
|
transformValues(node) {
|
|
@@ -297,6 +299,7 @@ class OperationNodeTransformer {
|
|
|
297
299
|
onCommit: node.onCommit,
|
|
298
300
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|
299
301
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|
302
|
+
selectQuery: this.transformNode(node.selectQuery),
|
|
300
303
|
});
|
|
301
304
|
}
|
|
302
305
|
transformColumnDefinition(node) {
|
|
@@ -315,6 +318,7 @@ class OperationNodeTransformer {
|
|
|
315
318
|
generated: this.transformNode(node.generated),
|
|
316
319
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|
317
320
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|
321
|
+
nullsNotDistinct: node.nullsNotDistinct,
|
|
318
322
|
});
|
|
319
323
|
}
|
|
320
324
|
transformAddColumn(node) {
|
|
@@ -416,6 +420,7 @@ class OperationNodeTransformer {
|
|
|
416
420
|
using: this.transformNode(node.using),
|
|
417
421
|
ifNotExists: node.ifNotExists,
|
|
418
422
|
where: this.transformNode(node.where),
|
|
423
|
+
nullsNotDistinct: node.nullsNotDistinct,
|
|
419
424
|
});
|
|
420
425
|
}
|
|
421
426
|
transformList(node) {
|
|
@@ -445,6 +450,7 @@ class OperationNodeTransformer {
|
|
|
445
450
|
kind: 'UniqueConstraintNode',
|
|
446
451
|
columns: this.transformNodeList(node.columns),
|
|
447
452
|
name: this.transformNode(node.name),
|
|
453
|
+
nullsNotDistinct: node.nullsNotDistinct,
|
|
448
454
|
});
|
|
449
455
|
}
|
|
450
456
|
transformForeignKeyConstraint(node) {
|
|
@@ -533,6 +539,8 @@ class OperationNodeTransformer {
|
|
|
533
539
|
columnAlterations: this.transformNodeList(node.columnAlterations),
|
|
534
540
|
addConstraint: this.transformNode(node.addConstraint),
|
|
535
541
|
dropConstraint: this.transformNode(node.dropConstraint),
|
|
542
|
+
addIndex: this.transformNode(node.addIndex),
|
|
543
|
+
dropIndex: this.transformNode(node.dropIndex),
|
|
536
544
|
});
|
|
537
545
|
}
|
|
538
546
|
transformDropColumn(node) {
|
|
@@ -628,6 +636,7 @@ class OperationNodeTransformer {
|
|
|
628
636
|
kind: 'SelectModifierNode',
|
|
629
637
|
modifier: node.modifier,
|
|
630
638
|
rawModifier: this.transformNode(node.rawModifier),
|
|
639
|
+
of: this.transformNodeList(node.of),
|
|
631
640
|
});
|
|
632
641
|
}
|
|
633
642
|
transformCreateType(node) {
|
|
@@ -765,6 +774,16 @@ class OperationNodeTransformer {
|
|
|
765
774
|
values: this.transformNodeList(node.values),
|
|
766
775
|
});
|
|
767
776
|
}
|
|
777
|
+
transformAddIndex(node) {
|
|
778
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
779
|
+
kind: 'AddIndexNode',
|
|
780
|
+
name: this.transformNode(node.name),
|
|
781
|
+
columns: this.transformNodeList(node.columns),
|
|
782
|
+
unique: node.unique,
|
|
783
|
+
using: this.transformNode(node.using),
|
|
784
|
+
ifNotExists: node.ifNotExists,
|
|
785
|
+
});
|
|
786
|
+
}
|
|
768
787
|
transformDataType(node) {
|
|
769
788
|
// An Object.freezed leaf node. No need to clone.
|
|
770
789
|
return node;
|
|
@@ -85,6 +85,7 @@ import { JSONPathNode } from './json-path-node.js';
|
|
|
85
85
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|
86
86
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|
87
87
|
import { TupleNode } from './tuple-node.js';
|
|
88
|
+
import { AddIndexNode } from './add-index-node.js';
|
|
88
89
|
export declare abstract class OperationNodeVisitor {
|
|
89
90
|
#private;
|
|
90
91
|
protected readonly nodeStack: OperationNode[];
|
|
@@ -176,4 +177,5 @@ export declare abstract class OperationNodeVisitor {
|
|
|
176
177
|
protected abstract visitJSONPathLeg(node: JSONPathLegNode): void;
|
|
177
178
|
protected abstract visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|
178
179
|
protected abstract visitTuple(node: TupleNode): void;
|
|
180
|
+
protected abstract visitAddIndex(node: AddIndexNode): void;
|
|
179
181
|
}
|
|
@@ -94,6 +94,7 @@ class OperationNodeVisitor {
|
|
|
94
94
|
JSONPathLegNode: this.visitJSONPathLeg.bind(this),
|
|
95
95
|
JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),
|
|
96
96
|
TupleNode: this.visitTuple.bind(this),
|
|
97
|
+
AddIndexNode: this.visitAddIndex.bind(this),
|
|
97
98
|
});
|
|
98
99
|
visitNode = (node) => {
|
|
99
100
|
this.nodeStack.push(node);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode';
|
|
1
|
+
export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'AddIndexNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
-
export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp"];
|
|
2
|
+
export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
|
|
3
3
|
export declare const ARITHMETIC_OPERATORS: readonly ["+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>"];
|
|
4
4
|
export declare const JSON_OPERATORS: readonly ["->", "->>"];
|
|
5
|
-
export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|
5
|
+
export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|
6
6
|
export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
|
|
7
7
|
export declare const UNARY_OPERATORS: readonly ["not", "-", "exists", "not exists"];
|
|
8
|
-
export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
|
|
8
|
+
export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
|
|
9
9
|
export type ComparisonOperator = (typeof COMPARISON_OPERATORS)[number];
|
|
10
10
|
export type ArithmeticOperator = (typeof ARITHMETIC_OPERATORS)[number];
|
|
11
11
|
export type JSONOperator = (typeof JSON_OPERATORS)[number];
|
|
@@ -4,12 +4,13 @@ export interface SelectModifierNode extends OperationNode {
|
|
|
4
4
|
readonly kind: 'SelectModifierNode';
|
|
5
5
|
readonly modifier?: SelectModifier;
|
|
6
6
|
readonly rawModifier?: OperationNode;
|
|
7
|
+
readonly of?: ReadonlyArray<OperationNode>;
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
10
|
* @internal
|
|
10
11
|
*/
|
|
11
12
|
export declare const SelectModifierNode: Readonly<{
|
|
12
13
|
is(node: OperationNode): node is SelectModifierNode;
|
|
13
|
-
create(modifier: SelectModifier): SelectModifierNode;
|
|
14
|
+
create(modifier: SelectModifier, of?: ReadonlyArray<OperationNode>): SelectModifierNode;
|
|
14
15
|
createWithExpression(modifier: OperationNode): SelectModifierNode;
|
|
15
16
|
}>;
|