kysely 0.26.2 → 0.27.0
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/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 +97 -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 -73
- package/dist/cjs/expression/expression-builder.js +8 -17
- package/dist/cjs/expression/expression-wrapper.d.ts +8 -8
- package/dist/cjs/helpers/mssql.d.ts +152 -0
- package/dist/cjs/helpers/mssql.js +160 -0
- package/dist/cjs/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/sqlite.d.ts +3 -3
- package/dist/cjs/index.d.ts +8 -2
- 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/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +17 -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/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/expression-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +3 -2
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +20 -9
- package/dist/cjs/parser/update-set-parser.d.ts +5 -2
- package/dist/cjs/parser/update-set-parser.js +13 -3
- package/dist/cjs/parser/value-parser.d.ts +2 -2
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +4 -4
- package/dist/cjs/query-builder/case-builder.d.ts +5 -4
- package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -6
- package/dist/cjs/query-builder/function-module.d.ts +98 -27
- 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 +32 -12
- package/dist/cjs/query-builder/insert-query-builder.js +3 -3
- 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 +3 -2
- package/dist/cjs/query-builder/json-path-builder.js +6 -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/returning-interface.d.ts +3 -2
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/cjs/query-builder/select-query-builder-expression.js +2 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +48 -29
- package/dist/cjs/query-builder/select-query-builder.js +5 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +25 -7
- package/dist/cjs/query-builder/update-query-builder.js +2 -2
- 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 +65 -12
- package/dist/cjs/query-creator.d.ts +5 -3
- package/dist/cjs/query-creator.js +0 -47
- package/dist/cjs/raw-builder/raw-builder.d.ts +0 -3
- 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/create-view-builder.d.ts +2 -2
- 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/infer-result.d.ts +2 -1
- package/dist/cjs/util/log.js +5 -1
- package/dist/cjs/util/object-utils.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +27 -20
- 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 +94 -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 -73
- package/dist/esm/expression/expression-builder.js +10 -19
- package/dist/esm/expression/expression-wrapper.d.ts +8 -8
- package/dist/esm/helpers/mssql.d.ts +152 -0
- package/dist/esm/helpers/mssql.js +155 -0
- package/dist/esm/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/sqlite.d.ts +3 -3
- package/dist/esm/index.d.ts +8 -2
- 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/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +17 -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/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/expression-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +3 -2
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +20 -9
- package/dist/esm/parser/update-set-parser.d.ts +5 -2
- package/dist/esm/parser/update-set-parser.js +10 -1
- package/dist/esm/parser/value-parser.d.ts +2 -2
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +4 -4
- package/dist/esm/query-builder/case-builder.d.ts +5 -4
- package/dist/esm/query-builder/delete-query-builder.d.ts +8 -6
- package/dist/esm/query-builder/function-module.d.ts +98 -27
- 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 +32 -12
- package/dist/esm/query-builder/insert-query-builder.js +4 -4
- 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 +3 -2
- package/dist/esm/query-builder/json-path-builder.js +6 -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/returning-interface.d.ts +3 -2
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/esm/query-builder/select-query-builder-expression.js +2 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +48 -29
- package/dist/esm/query-builder/select-query-builder.js +5 -2
- package/dist/esm/query-builder/update-query-builder.d.ts +25 -7
- package/dist/esm/query-builder/update-query-builder.js +3 -3
- 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 +65 -12
- package/dist/esm/query-creator.d.ts +5 -3
- package/dist/esm/query-creator.js +0 -47
- package/dist/esm/raw-builder/raw-builder.d.ts +0 -3
- 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/create-view-builder.d.ts +2 -2
- 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/infer-result.d.ts +2 -1
- package/dist/esm/util/log.js +5 -1
- package/dist/esm/util/object-utils.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +27 -20
- package/helpers/mssql.d.ts +1 -0
- package/helpers/mssql.js +1 -0
- package/package.json +17 -6
|
@@ -173,8 +173,8 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
173
173
|
* )
|
|
174
174
|
* ```
|
|
175
175
|
*/
|
|
176
|
-
or<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
177
|
-
or(expression:
|
|
176
|
+
or<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): T extends SqlBool ? OrWrapper<DB, TB, SqlBool> : KyselyTypeError<'or() method can only be called on boolean expressions'>;
|
|
177
|
+
or<E extends OperandExpression<SqlBool>>(expression: E): T extends SqlBool ? OrWrapper<DB, TB, SqlBool> : KyselyTypeError<'or() method can only be called on boolean expressions'>;
|
|
178
178
|
/**
|
|
179
179
|
* Combines `this` and another expression using `AND`.
|
|
180
180
|
*
|
|
@@ -235,8 +235,8 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
235
235
|
* )
|
|
236
236
|
* ```
|
|
237
237
|
*/
|
|
238
|
-
and<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
239
|
-
and(expression:
|
|
238
|
+
and<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): T extends SqlBool ? AndWrapper<DB, TB, SqlBool> : KyselyTypeError<'and() method can only be called on boolean expressions'>;
|
|
239
|
+
and<E extends OperandExpression<SqlBool>>(expression: E): T extends SqlBool ? AndWrapper<DB, TB, SqlBool> : KyselyTypeError<'and() method can only be called on boolean expressions'>;
|
|
240
240
|
/**
|
|
241
241
|
* Change the output type of the expression.
|
|
242
242
|
*
|
|
@@ -389,8 +389,8 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
389
389
|
*
|
|
390
390
|
* See {@link ExpressionWrapper.or} for examples.
|
|
391
391
|
*/
|
|
392
|
-
or<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
393
|
-
or(expression:
|
|
392
|
+
or<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OrWrapper<DB, TB, T>;
|
|
393
|
+
or<E extends OperandExpression<SqlBool>>(expression: E): OrWrapper<DB, TB, T>;
|
|
394
394
|
/**
|
|
395
395
|
* Change the output type of the expression.
|
|
396
396
|
*
|
|
@@ -525,8 +525,8 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
525
525
|
*
|
|
526
526
|
* See {@link ExpressionWrapper.and} for examples.
|
|
527
527
|
*/
|
|
528
|
-
and<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
529
|
-
and(expression:
|
|
528
|
+
and<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): AndWrapper<DB, TB, T>;
|
|
529
|
+
and<E extends OperandExpression<SqlBool>>(expression: E): AndWrapper<DB, TB, T>;
|
|
530
530
|
/**
|
|
531
531
|
* Change the output type of the expression.
|
|
532
532
|
*
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
3
|
+
import { Simplify } from '../util/type-utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* An MS SQL Server helper for aggregating a subquery into a JSON array.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
8
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
9
|
+
*
|
|
10
|
+
* The plugin can be installed like this:
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* const db = new Kysely({
|
|
14
|
+
* dialect: new MssqlDialect(config),
|
|
15
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
16
|
+
* })
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* ### Examples
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* const result = await db
|
|
23
|
+
* .selectFrom('person')
|
|
24
|
+
* .select((eb) => [
|
|
25
|
+
* 'id',
|
|
26
|
+
* jsonArrayFrom(
|
|
27
|
+
* eb.selectFrom('pet')
|
|
28
|
+
* .select(['pet.id as pet_id', 'pet.name'])
|
|
29
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
30
|
+
* .orderBy('pet.name')
|
|
31
|
+
* .modifyEnd(sql`offset 0 rows`)
|
|
32
|
+
* ).as('pets')
|
|
33
|
+
* ])
|
|
34
|
+
* .execute()
|
|
35
|
+
*
|
|
36
|
+
* result[0].id
|
|
37
|
+
* result[0].pets[0].pet_id
|
|
38
|
+
* result[0].pets[0].name
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* The generated SQL (MS SQL Server):
|
|
42
|
+
*
|
|
43
|
+
* ```sql
|
|
44
|
+
* select "id", (
|
|
45
|
+
* select coalesce((select * from (
|
|
46
|
+
* select "pet"."id" as "pet_id", "pet"."name"
|
|
47
|
+
* from "pet"
|
|
48
|
+
* where "pet"."owner_id" = "person"."id"
|
|
49
|
+
* order by "pet"."name"
|
|
50
|
+
* offset 0 rows
|
|
51
|
+
* ) as "agg" for json path, include_null_values), '[]')
|
|
52
|
+
* ) as "pets"
|
|
53
|
+
* from "person"
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simplify<O>[]>;
|
|
57
|
+
/**
|
|
58
|
+
* An MS SQL Server helper for turning a subquery into a JSON object.
|
|
59
|
+
*
|
|
60
|
+
* The subquery must only return one row.
|
|
61
|
+
*
|
|
62
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
63
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
64
|
+
*
|
|
65
|
+
* The plugin can be installed like this:
|
|
66
|
+
*
|
|
67
|
+
* ```ts
|
|
68
|
+
* const db = new Kysely({
|
|
69
|
+
* dialect: new MssqlDialect(config),
|
|
70
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
71
|
+
* })
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* ### Examples
|
|
75
|
+
*
|
|
76
|
+
* ```ts
|
|
77
|
+
* const result = await db
|
|
78
|
+
* .selectFrom('person')
|
|
79
|
+
* .select((eb) => [
|
|
80
|
+
* 'id',
|
|
81
|
+
* jsonObjectFrom(
|
|
82
|
+
* eb.selectFrom('pet')
|
|
83
|
+
* .select(['pet.id as pet_id', 'pet.name'])
|
|
84
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
85
|
+
* .where('pet.is_favorite', '=', 1)
|
|
86
|
+
* ).as('favorite_pet')
|
|
87
|
+
* ])
|
|
88
|
+
* .execute()
|
|
89
|
+
*
|
|
90
|
+
* result[0].id
|
|
91
|
+
* result[0].favorite_pet.pet_id
|
|
92
|
+
* result[0].favorite_pet.name
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* The generated SQL (MS SQL Server):
|
|
96
|
+
*
|
|
97
|
+
* ```sql
|
|
98
|
+
* select "id", (
|
|
99
|
+
* select * from (
|
|
100
|
+
* select "pet"."id" as "pet_id", "pet"."name"
|
|
101
|
+
* from "pet"
|
|
102
|
+
* where "pet"."owner_id" = "person"."id"
|
|
103
|
+
* and "pet"."is_favorite" = @1
|
|
104
|
+
* ) as "agg" for json path, include_null_values, without_array_wrapper
|
|
105
|
+
* ) as "favorite_pet"
|
|
106
|
+
* from "person"
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function jsonObjectFrom<O>(expr: Expression<O>): RawBuilder<Simplify<O> | null>;
|
|
110
|
+
/**
|
|
111
|
+
* The MS SQL Server `json_query` function, single argument variant.
|
|
112
|
+
*
|
|
113
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
114
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
115
|
+
*
|
|
116
|
+
* The plugin can be installed like this:
|
|
117
|
+
*
|
|
118
|
+
* ```ts
|
|
119
|
+
* const db = new Kysely({
|
|
120
|
+
* dialect: new MssqlDialect(config),
|
|
121
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
122
|
+
* })
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
125
|
+
* ### Examples
|
|
126
|
+
*
|
|
127
|
+
* ```ts
|
|
128
|
+
* const result = await db
|
|
129
|
+
* .selectFrom('person')
|
|
130
|
+
* .select((eb) => [
|
|
131
|
+
* 'id',
|
|
132
|
+
* jsonBuildObject({
|
|
133
|
+
* first: eb.ref('first_name'),
|
|
134
|
+
* last: eb.ref('last_name'),
|
|
135
|
+
* full: eb.fn('concat', ['first_name', eb.val(' '), 'last_name'])
|
|
136
|
+
* }).as('name')
|
|
137
|
+
* ])
|
|
138
|
+
* .execute()
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* The generated SQL (MS SQL Server):
|
|
142
|
+
*
|
|
143
|
+
* ```sql
|
|
144
|
+
* select "id", json_query(
|
|
145
|
+
* '{"first":"'+"first_name"+',"last":"'+"last_name"+',"full":"'+concat("first_name", ' ', "last_name")+'"}'
|
|
146
|
+
* ) as "name"
|
|
147
|
+
* from "person"
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export declare function jsonBuildObject<O extends Record<string, Expression<unknown>>>(obj: O): RawBuilder<Simplify<{
|
|
151
|
+
[K in keyof O]: O[K] extends Expression<infer V> ? V : never;
|
|
152
|
+
}>>;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/// <reference types="./mssql.d.ts" />
|
|
2
|
+
import { sql } from '../raw-builder/sql.js';
|
|
3
|
+
/**
|
|
4
|
+
* An MS SQL Server helper for aggregating a subquery into a JSON array.
|
|
5
|
+
*
|
|
6
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
7
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
8
|
+
*
|
|
9
|
+
* The plugin can be installed like this:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const db = new Kysely({
|
|
13
|
+
* dialect: new MssqlDialect(config),
|
|
14
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* ### Examples
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* const result = await db
|
|
22
|
+
* .selectFrom('person')
|
|
23
|
+
* .select((eb) => [
|
|
24
|
+
* 'id',
|
|
25
|
+
* jsonArrayFrom(
|
|
26
|
+
* eb.selectFrom('pet')
|
|
27
|
+
* .select(['pet.id as pet_id', 'pet.name'])
|
|
28
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
29
|
+
* .orderBy('pet.name')
|
|
30
|
+
* .modifyEnd(sql`offset 0 rows`)
|
|
31
|
+
* ).as('pets')
|
|
32
|
+
* ])
|
|
33
|
+
* .execute()
|
|
34
|
+
*
|
|
35
|
+
* result[0].id
|
|
36
|
+
* result[0].pets[0].pet_id
|
|
37
|
+
* result[0].pets[0].name
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* The generated SQL (MS SQL Server):
|
|
41
|
+
*
|
|
42
|
+
* ```sql
|
|
43
|
+
* select "id", (
|
|
44
|
+
* select coalesce((select * from (
|
|
45
|
+
* select "pet"."id" as "pet_id", "pet"."name"
|
|
46
|
+
* from "pet"
|
|
47
|
+
* where "pet"."owner_id" = "person"."id"
|
|
48
|
+
* order by "pet"."name"
|
|
49
|
+
* offset 0 rows
|
|
50
|
+
* ) as "agg" for json path, include_null_values), '[]')
|
|
51
|
+
* ) as "pets"
|
|
52
|
+
* from "person"
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function jsonArrayFrom(expr) {
|
|
56
|
+
return sql `coalesce((select * from ${expr} as agg for json path, include_null_values), '[]')`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* An MS SQL Server helper for turning a subquery into a JSON object.
|
|
60
|
+
*
|
|
61
|
+
* The subquery must only return one row.
|
|
62
|
+
*
|
|
63
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
64
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
65
|
+
*
|
|
66
|
+
* The plugin can be installed like this:
|
|
67
|
+
*
|
|
68
|
+
* ```ts
|
|
69
|
+
* const db = new Kysely({
|
|
70
|
+
* dialect: new MssqlDialect(config),
|
|
71
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
72
|
+
* })
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* ### Examples
|
|
76
|
+
*
|
|
77
|
+
* ```ts
|
|
78
|
+
* const result = await db
|
|
79
|
+
* .selectFrom('person')
|
|
80
|
+
* .select((eb) => [
|
|
81
|
+
* 'id',
|
|
82
|
+
* jsonObjectFrom(
|
|
83
|
+
* eb.selectFrom('pet')
|
|
84
|
+
* .select(['pet.id as pet_id', 'pet.name'])
|
|
85
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
86
|
+
* .where('pet.is_favorite', '=', 1)
|
|
87
|
+
* ).as('favorite_pet')
|
|
88
|
+
* ])
|
|
89
|
+
* .execute()
|
|
90
|
+
*
|
|
91
|
+
* result[0].id
|
|
92
|
+
* result[0].favorite_pet.pet_id
|
|
93
|
+
* result[0].favorite_pet.name
|
|
94
|
+
* ```
|
|
95
|
+
*
|
|
96
|
+
* The generated SQL (MS SQL Server):
|
|
97
|
+
*
|
|
98
|
+
* ```sql
|
|
99
|
+
* select "id", (
|
|
100
|
+
* select * from (
|
|
101
|
+
* select "pet"."id" as "pet_id", "pet"."name"
|
|
102
|
+
* from "pet"
|
|
103
|
+
* where "pet"."owner_id" = "person"."id"
|
|
104
|
+
* and "pet"."is_favorite" = @1
|
|
105
|
+
* ) as "agg" for json path, include_null_values, without_array_wrapper
|
|
106
|
+
* ) as "favorite_pet"
|
|
107
|
+
* from "person"
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export function jsonObjectFrom(expr) {
|
|
111
|
+
return sql `(select * from ${expr} as agg for json path, include_null_values, without_array_wrapper)`;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The MS SQL Server `json_query` function, single argument variant.
|
|
115
|
+
*
|
|
116
|
+
* NOTE: This helper only works correctly if you've installed the `ParseJSONResultsPlugin`.
|
|
117
|
+
* Otherwise the nested selections will be returned as JSON strings.
|
|
118
|
+
*
|
|
119
|
+
* The plugin can be installed like this:
|
|
120
|
+
*
|
|
121
|
+
* ```ts
|
|
122
|
+
* const db = new Kysely({
|
|
123
|
+
* dialect: new MssqlDialect(config),
|
|
124
|
+
* plugins: [new ParseJSONResultsPlugin()]
|
|
125
|
+
* })
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* ### Examples
|
|
129
|
+
*
|
|
130
|
+
* ```ts
|
|
131
|
+
* const result = await db
|
|
132
|
+
* .selectFrom('person')
|
|
133
|
+
* .select((eb) => [
|
|
134
|
+
* 'id',
|
|
135
|
+
* jsonBuildObject({
|
|
136
|
+
* first: eb.ref('first_name'),
|
|
137
|
+
* last: eb.ref('last_name'),
|
|
138
|
+
* full: eb.fn('concat', ['first_name', eb.val(' '), 'last_name'])
|
|
139
|
+
* }).as('name')
|
|
140
|
+
* ])
|
|
141
|
+
* .execute()
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* The generated SQL (MS SQL Server):
|
|
145
|
+
*
|
|
146
|
+
* ```sql
|
|
147
|
+
* select "id", json_query(
|
|
148
|
+
* '{"first":"'+"first_name"+',"last":"'+"last_name"+',"full":"'+concat("first_name", ' ', "last_name")+'"}'
|
|
149
|
+
* ) as "name"
|
|
150
|
+
* from "person"
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export function jsonBuildObject(obj) {
|
|
154
|
+
return sql `json_query('{${sql.join(Object.keys(obj).map((k) => sql `"${sql.raw(k)}":"'+${obj[k]}+'"`), sql `,`)}}')`;
|
|
155
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Expression } from '../expression/expression.js';
|
|
2
|
-
import {
|
|
2
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
3
3
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
4
|
import { Simplify } from '../util/type-utils.js';
|
|
5
5
|
/**
|
|
@@ -48,7 +48,7 @@ import { Simplify } from '../util/type-utils.js';
|
|
|
48
48
|
* from `person`
|
|
49
49
|
* ```
|
|
50
50
|
*/
|
|
51
|
-
export declare function jsonArrayFrom<O>(expr:
|
|
51
|
+
export declare function jsonArrayFrom<O>(expr: SelectQueryBuilderExpression<O>): RawBuilder<Simplify<O>[]>;
|
|
52
52
|
/**
|
|
53
53
|
* A MySQL helper for turning a subquery into a JSON object.
|
|
54
54
|
*
|
|
@@ -97,7 +97,7 @@ export declare function jsonArrayFrom<O>(expr: SelectQueryBuilder<any, any, O>):
|
|
|
97
97
|
* from `person`
|
|
98
98
|
* ```
|
|
99
99
|
*/
|
|
100
|
-
export declare function jsonObjectFrom<O>(expr:
|
|
100
|
+
export declare function jsonObjectFrom<O>(expr: SelectQueryBuilderExpression<O>): RawBuilder<Simplify<O> | null>;
|
|
101
101
|
/**
|
|
102
102
|
* The MySQL `json_object` function.
|
|
103
103
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Expression } from '../expression/expression.js';
|
|
2
|
-
import {
|
|
2
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
3
3
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
4
|
import { Simplify } from '../util/type-utils.js';
|
|
5
5
|
/**
|
|
@@ -55,7 +55,7 @@ import { Simplify } from '../util/type-utils.js';
|
|
|
55
55
|
* from "person"
|
|
56
56
|
* ```
|
|
57
57
|
*/
|
|
58
|
-
export declare function jsonArrayFrom<O>(expr:
|
|
58
|
+
export declare function jsonArrayFrom<O>(expr: SelectQueryBuilderExpression<O>): RawBuilder<Simplify<O>[]>;
|
|
59
59
|
/**
|
|
60
60
|
* A SQLite helper for turning a subquery into a JSON object.
|
|
61
61
|
*
|
|
@@ -111,7 +111,7 @@ export declare function jsonArrayFrom<O>(expr: SelectQueryBuilder<any, any, O>):
|
|
|
111
111
|
* from "person";
|
|
112
112
|
* ```
|
|
113
113
|
*/
|
|
114
|
-
export declare function jsonObjectFrom<O>(expr:
|
|
114
|
+
export declare function jsonObjectFrom<O>(expr: SelectQueryBuilderExpression<O>): RawBuilder<Simplify<O> | null>;
|
|
115
115
|
/**
|
|
116
116
|
* The SQLite `json_object` function.
|
|
117
117
|
*
|
package/dist/esm/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,10 +182,10 @@ 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,
|
|
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
|
-
export { SelectExpression, SelectArg, Selection, } from './parser/select-parser.js';
|
|
188
|
+
export { SelectExpression, SelectCallback, SelectArg, Selection, CallbackSelection, } from './parser/select-parser.js';
|
|
183
189
|
export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
|
|
184
190
|
export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
|
|
185
191
|
export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -73,6 +73,12 @@ export * from './dialect/postgres/postgres-dialect.js';
|
|
|
73
73
|
export * from './dialect/sqlite/sqlite-query-compiler.js';
|
|
74
74
|
export * from './dialect/sqlite/sqlite-introspector.js';
|
|
75
75
|
export * from './dialect/sqlite/sqlite-adapter.js';
|
|
76
|
+
export * from './dialect/mssql/mssql-adapter.js';
|
|
77
|
+
export * from './dialect/mssql/mssql-dialect-config.js';
|
|
78
|
+
export * from './dialect/mssql/mssql-dialect.js';
|
|
79
|
+
export * from './dialect/mssql/mssql-driver.js';
|
|
80
|
+
export * from './dialect/mssql/mssql-introspector.js';
|
|
81
|
+
export * from './dialect/mssql/mssql-query-compiler.js';
|
|
76
82
|
export * from './query-compiler/default-query-compiler.js';
|
|
77
83
|
export * from './query-compiler/query-compiler.js';
|
|
78
84
|
export * from './migration/migrator.js';
|
|
@@ -218,10 +218,7 @@ export class Migrator {
|
|
|
218
218
|
}
|
|
219
219
|
if (!(await this.#doesSchemaExists())) {
|
|
220
220
|
try {
|
|
221
|
-
await this.#props.db.schema
|
|
222
|
-
.createSchema(this.#migrationTableSchema)
|
|
223
|
-
.ifNotExists()
|
|
224
|
-
.execute();
|
|
221
|
+
await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));
|
|
225
222
|
}
|
|
226
223
|
catch (error) {
|
|
227
224
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create schema`
|
|
@@ -237,20 +234,15 @@ export class Migrator {
|
|
|
237
234
|
if (!(await this.#doesTableExists(this.#migrationTable))) {
|
|
238
235
|
try {
|
|
239
236
|
if (this.#migrationTableSchema) {
|
|
240
|
-
await this.#props.db.schema
|
|
241
|
-
.createSchema(this.#migrationTableSchema)
|
|
242
|
-
.ifNotExists()
|
|
243
|
-
.execute();
|
|
237
|
+
await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));
|
|
244
238
|
}
|
|
245
|
-
await this.#props.db.schema
|
|
239
|
+
await this.#createIfNotExists(this.#props.db.schema
|
|
246
240
|
.withPlugin(this.#schemaPlugin)
|
|
247
241
|
.createTable(this.#migrationTable)
|
|
248
|
-
.ifNotExists()
|
|
249
242
|
.addColumn('name', 'varchar(255)', (col) => col.notNull().primaryKey())
|
|
250
243
|
// The migration run time as ISO string. This is not a real date type as we
|
|
251
244
|
// can't know which data type is supported by all future dialects.
|
|
252
|
-
.addColumn('timestamp', 'varchar(255)', (col) => col.notNull())
|
|
253
|
-
.execute();
|
|
245
|
+
.addColumn('timestamp', 'varchar(255)', (col) => col.notNull()));
|
|
254
246
|
}
|
|
255
247
|
catch (error) {
|
|
256
248
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|
@@ -265,13 +257,11 @@ export class Migrator {
|
|
|
265
257
|
async #ensureMigrationLockTableExists() {
|
|
266
258
|
if (!(await this.#doesTableExists(this.#migrationLockTable))) {
|
|
267
259
|
try {
|
|
268
|
-
await this.#props.db.schema
|
|
260
|
+
await this.#createIfNotExists(this.#props.db.schema
|
|
269
261
|
.withPlugin(this.#schemaPlugin)
|
|
270
262
|
.createTable(this.#migrationLockTable)
|
|
271
|
-
.ifNotExists()
|
|
272
263
|
.addColumn('id', 'varchar(255)', (col) => col.notNull().primaryKey())
|
|
273
|
-
.addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0))
|
|
274
|
-
.execute();
|
|
264
|
+
.addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0)));
|
|
275
265
|
}
|
|
276
266
|
catch (error) {
|
|
277
267
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|
@@ -479,6 +469,12 @@ export class Migrator {
|
|
|
479
469
|
}
|
|
480
470
|
return { results };
|
|
481
471
|
}
|
|
472
|
+
async #createIfNotExists(qb) {
|
|
473
|
+
if (this.#props.db.getExecutor().adapter.supportsCreateIfNotExists) {
|
|
474
|
+
qb = qb.ifNotExists();
|
|
475
|
+
}
|
|
476
|
+
await qb.execute();
|
|
477
|
+
}
|
|
482
478
|
}
|
|
483
479
|
class MigrationResultSetError extends Error {
|
|
484
480
|
#resultSet;
|
|
@@ -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,29 @@
|
|
|
1
|
+
/// <reference types="./add-index-node.d.ts" />
|
|
2
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
import { IdentifierNode } from './identifier-node.js';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export const AddIndexNode = freeze({
|
|
8
|
+
is(node) {
|
|
9
|
+
return node.kind === 'AddIndexNode';
|
|
10
|
+
},
|
|
11
|
+
create(name) {
|
|
12
|
+
return freeze({
|
|
13
|
+
kind: 'AddIndexNode',
|
|
14
|
+
name: IdentifierNode.create(name)
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
cloneWith(node, props) {
|
|
18
|
+
return freeze({
|
|
19
|
+
...node,
|
|
20
|
+
...props,
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
cloneWithColumns(node, columns) {
|
|
24
|
+
return freeze({
|
|
25
|
+
...node,
|
|
26
|
+
columns: [...(node.columns || []), ...columns],
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
});
|
|
@@ -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
|
|
@@ -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;
|