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
|
@@ -130,7 +130,17 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
130
130
|
* This method call doesn't change the SQL in any way. This methods simply
|
|
131
131
|
* returns a copy of this `RawBuilder` with a new output type.
|
|
132
132
|
*/
|
|
133
|
-
$castTo<
|
|
133
|
+
$castTo<C>(): RawBuilder<C>;
|
|
134
|
+
/**
|
|
135
|
+
* Omit null from the expression's type.
|
|
136
|
+
*
|
|
137
|
+
* This function can be useful in cases where you know an expression can't be
|
|
138
|
+
* null, but Kysely is unable to infer it.
|
|
139
|
+
*
|
|
140
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
141
|
+
* returns a copy of `this` with a new output type.
|
|
142
|
+
*/
|
|
143
|
+
$notNull(): RawBuilder<Exclude<O, null>>;
|
|
134
144
|
/**
|
|
135
145
|
* Adds a plugin for this SQL snippet.
|
|
136
146
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="./sql.d.ts" />
|
|
2
2
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
3
|
+
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
4
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
4
5
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
5
6
|
import { parseStringReference } from '../parser/reference-parser.js';
|
|
@@ -10,7 +11,7 @@ import { createRawBuilder } from './raw-builder.js';
|
|
|
10
11
|
export const sql = Object.assign((sqlFragments, ...parameters) => {
|
|
11
12
|
return createRawBuilder({
|
|
12
13
|
queryId: createQueryId(),
|
|
13
|
-
rawNode: RawNode.create(sqlFragments, parameters?.map(
|
|
14
|
+
rawNode: RawNode.create(sqlFragments, parameters?.map(parseParameter) ?? []),
|
|
14
15
|
});
|
|
15
16
|
}, {
|
|
16
17
|
ref(columnReference) {
|
|
@@ -62,7 +63,7 @@ export const sql = Object.assign((sqlFragments, ...parameters) => {
|
|
|
62
63
|
const nodes = new Array(2 * array.length - 1);
|
|
63
64
|
const sep = separator.toOperationNode();
|
|
64
65
|
for (let i = 0; i < array.length; ++i) {
|
|
65
|
-
nodes[2 * i] =
|
|
66
|
+
nodes[2 * i] = parseParameter(array[i]);
|
|
66
67
|
if (i !== array.length - 1) {
|
|
67
68
|
nodes[2 * i + 1] = sep;
|
|
68
69
|
}
|
|
@@ -73,3 +74,9 @@ export const sql = Object.assign((sqlFragments, ...parameters) => {
|
|
|
73
74
|
});
|
|
74
75
|
},
|
|
75
76
|
});
|
|
77
|
+
function parseParameter(param) {
|
|
78
|
+
if (isOperationNodeSource(param)) {
|
|
79
|
+
return param.toOperationNode();
|
|
80
|
+
}
|
|
81
|
+
return parseValueExpression(param);
|
|
82
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
|
+
import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|
3
|
+
import { IndexType } from '../operation-node/create-index-node.js';
|
|
4
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
5
|
+
import { OrderedColumnName } from '../parser/reference-parser.js';
|
|
6
|
+
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
7
|
+
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
8
|
+
import { Compilable } from '../util/compilable.js';
|
|
9
|
+
import { QueryId } from '../util/query-id.js';
|
|
10
|
+
export declare class AlterTableAddIndexBuilder implements OperationNodeSource, Compilable {
|
|
11
|
+
#private;
|
|
12
|
+
constructor(props: AlterTableAddIndexBuilderProps);
|
|
13
|
+
/**
|
|
14
|
+
* Makes the index unique.
|
|
15
|
+
*/
|
|
16
|
+
unique(): AlterTableAddIndexBuilder;
|
|
17
|
+
/**
|
|
18
|
+
* Adds a column to the index.
|
|
19
|
+
*
|
|
20
|
+
* Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|
21
|
+
* for specifying an arbitrary expression.
|
|
22
|
+
*
|
|
23
|
+
* ### Examples
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* await db.schema
|
|
27
|
+
* .alterTable('person')
|
|
28
|
+
* .createIndex('person_first_name_and_age_index')
|
|
29
|
+
* .column('first_name')
|
|
30
|
+
* .column('age desc')
|
|
31
|
+
* .execute()
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* The generated SQL (MySQL):
|
|
35
|
+
*
|
|
36
|
+
* ```sql
|
|
37
|
+
* alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
column<CL extends string>(column: OrderedColumnName<CL>): AlterTableAddIndexBuilder;
|
|
41
|
+
/**
|
|
42
|
+
* Specifies a list of columns for the index.
|
|
43
|
+
*
|
|
44
|
+
* Also see {@link column} for adding a single column or {@link expression} for
|
|
45
|
+
* specifying an arbitrary expression.
|
|
46
|
+
*
|
|
47
|
+
* ### Examples
|
|
48
|
+
*
|
|
49
|
+
* ```ts
|
|
50
|
+
* await db.schema
|
|
51
|
+
* .alterTable('person')
|
|
52
|
+
* .addIndex('person_first_name_and_age_index')
|
|
53
|
+
* .columns(['first_name', 'age desc'])
|
|
54
|
+
* .execute()
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* The generated SQL (MySQL):
|
|
58
|
+
*
|
|
59
|
+
* ```sql
|
|
60
|
+
* alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
columns<CL extends string>(columns: OrderedColumnName<CL>[]): AlterTableAddIndexBuilder;
|
|
64
|
+
/**
|
|
65
|
+
* Specifies an arbitrary expression for the index.
|
|
66
|
+
*
|
|
67
|
+
* ### Examples
|
|
68
|
+
*
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { sql } from 'kysely'
|
|
71
|
+
*
|
|
72
|
+
* await db.schema
|
|
73
|
+
* .alterTable('person')
|
|
74
|
+
* .addIndex('person_first_name_index')
|
|
75
|
+
* .expression(sql`(first_name < 'Sami')`)
|
|
76
|
+
* .execute()
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* The generated SQL (MySQL):
|
|
80
|
+
*
|
|
81
|
+
* ```sql
|
|
82
|
+
* alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
expression(expression: Expression<any>): AlterTableAddIndexBuilder;
|
|
86
|
+
/**
|
|
87
|
+
* Specifies the index type.
|
|
88
|
+
*/
|
|
89
|
+
using(indexType: IndexType): AlterTableAddIndexBuilder;
|
|
90
|
+
using(indexType: string): AlterTableAddIndexBuilder;
|
|
91
|
+
/**
|
|
92
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
93
|
+
* what the provided function returns.
|
|
94
|
+
*/
|
|
95
|
+
$call<T>(func: (qb: this) => T): T;
|
|
96
|
+
toOperationNode(): AlterTableNode;
|
|
97
|
+
compile(): CompiledQuery;
|
|
98
|
+
execute(): Promise<void>;
|
|
99
|
+
}
|
|
100
|
+
export interface AlterTableAddIndexBuilderProps {
|
|
101
|
+
readonly queryId: QueryId;
|
|
102
|
+
readonly executor: QueryExecutor;
|
|
103
|
+
readonly node: AlterTableNode;
|
|
104
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/// <reference types="./alter-table-add-index-builder.d.ts" />
|
|
2
|
+
import { AddIndexNode } from '../operation-node/add-index-node.js';
|
|
3
|
+
import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|
4
|
+
import { RawNode } from '../operation-node/raw-node.js';
|
|
5
|
+
import { parseOrderedColumnName } from '../parser/reference-parser.js';
|
|
6
|
+
import { freeze } from '../util/object-utils.js';
|
|
7
|
+
import { preventAwait } from '../util/prevent-await.js';
|
|
8
|
+
export class AlterTableAddIndexBuilder {
|
|
9
|
+
#props;
|
|
10
|
+
constructor(props) {
|
|
11
|
+
this.#props = freeze(props);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Makes the index unique.
|
|
15
|
+
*/
|
|
16
|
+
unique() {
|
|
17
|
+
return new AlterTableAddIndexBuilder({
|
|
18
|
+
...this.#props,
|
|
19
|
+
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
20
|
+
addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {
|
|
21
|
+
unique: true,
|
|
22
|
+
}),
|
|
23
|
+
}),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Adds a column to the index.
|
|
28
|
+
*
|
|
29
|
+
* Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|
30
|
+
* for specifying an arbitrary expression.
|
|
31
|
+
*
|
|
32
|
+
* ### Examples
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* await db.schema
|
|
36
|
+
* .alterTable('person')
|
|
37
|
+
* .createIndex('person_first_name_and_age_index')
|
|
38
|
+
* .column('first_name')
|
|
39
|
+
* .column('age desc')
|
|
40
|
+
* .execute()
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* The generated SQL (MySQL):
|
|
44
|
+
*
|
|
45
|
+
* ```sql
|
|
46
|
+
* alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
column(column) {
|
|
50
|
+
return new AlterTableAddIndexBuilder({
|
|
51
|
+
...this.#props,
|
|
52
|
+
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
53
|
+
addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [parseOrderedColumnName(column)]),
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Specifies a list of columns for the index.
|
|
59
|
+
*
|
|
60
|
+
* Also see {@link column} for adding a single column or {@link expression} for
|
|
61
|
+
* specifying an arbitrary expression.
|
|
62
|
+
*
|
|
63
|
+
* ### Examples
|
|
64
|
+
*
|
|
65
|
+
* ```ts
|
|
66
|
+
* await db.schema
|
|
67
|
+
* .alterTable('person')
|
|
68
|
+
* .addIndex('person_first_name_and_age_index')
|
|
69
|
+
* .columns(['first_name', 'age desc'])
|
|
70
|
+
* .execute()
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* The generated SQL (MySQL):
|
|
74
|
+
*
|
|
75
|
+
* ```sql
|
|
76
|
+
* alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
columns(columns) {
|
|
80
|
+
return new AlterTableAddIndexBuilder({
|
|
81
|
+
...this.#props,
|
|
82
|
+
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
83
|
+
addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, columns.map(parseOrderedColumnName)),
|
|
84
|
+
}),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Specifies an arbitrary expression for the index.
|
|
89
|
+
*
|
|
90
|
+
* ### Examples
|
|
91
|
+
*
|
|
92
|
+
* ```ts
|
|
93
|
+
* import { sql } from 'kysely'
|
|
94
|
+
*
|
|
95
|
+
* await db.schema
|
|
96
|
+
* .alterTable('person')
|
|
97
|
+
* .addIndex('person_first_name_index')
|
|
98
|
+
* .expression(sql`(first_name < 'Sami')`)
|
|
99
|
+
* .execute()
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* The generated SQL (MySQL):
|
|
103
|
+
*
|
|
104
|
+
* ```sql
|
|
105
|
+
* alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
expression(expression) {
|
|
109
|
+
return new AlterTableAddIndexBuilder({
|
|
110
|
+
...this.#props,
|
|
111
|
+
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
112
|
+
addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [expression.toOperationNode()]),
|
|
113
|
+
}),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
using(indexType) {
|
|
117
|
+
return new AlterTableAddIndexBuilder({
|
|
118
|
+
...this.#props,
|
|
119
|
+
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
120
|
+
addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {
|
|
121
|
+
using: RawNode.createWithSql(indexType),
|
|
122
|
+
}),
|
|
123
|
+
}),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
128
|
+
* what the provided function returns.
|
|
129
|
+
*/
|
|
130
|
+
$call(func) {
|
|
131
|
+
return func(this);
|
|
132
|
+
}
|
|
133
|
+
toOperationNode() {
|
|
134
|
+
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
135
|
+
}
|
|
136
|
+
compile() {
|
|
137
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
138
|
+
}
|
|
139
|
+
async execute() {
|
|
140
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
preventAwait(AlterTableAddIndexBuilder, "don't await AlterTableAddIndexBuilder instances directly. To execute the query you need to call `execute`");
|
|
@@ -11,6 +11,8 @@ import { AlterColumnBuilderCallback } from './alter-column-builder.js';
|
|
|
11
11
|
import { AlterTableExecutor } from './alter-table-executor.js';
|
|
12
12
|
import { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';
|
|
13
13
|
import { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';
|
|
14
|
+
import { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';
|
|
15
|
+
import { UniqueConstraintNodeBuilderCallback } from './unique-constraint-builder.js';
|
|
14
16
|
/**
|
|
15
17
|
* This builder can be used to create a `alter table` query.
|
|
16
18
|
*/
|
|
@@ -35,7 +37,7 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|
|
35
37
|
/**
|
|
36
38
|
* See {@link CreateTableBuilder.addUniqueConstraint}
|
|
37
39
|
*/
|
|
38
|
-
addUniqueConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|
40
|
+
addUniqueConstraint(constraintName: string, columns: string[], build?: UniqueConstraintNodeBuilderCallback): AlterTableExecutor;
|
|
39
41
|
/**
|
|
40
42
|
* See {@link CreateTableBuilder.addCheckConstraint}
|
|
41
43
|
*/
|
|
@@ -53,6 +55,44 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|
|
53
55
|
*/
|
|
54
56
|
addPrimaryKeyConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|
55
57
|
dropConstraint(constraintName: string): AlterTableDropConstraintBuilder;
|
|
58
|
+
/**
|
|
59
|
+
* This can be used to add index to table.
|
|
60
|
+
*
|
|
61
|
+
* ### Examples
|
|
62
|
+
*
|
|
63
|
+
* ```ts
|
|
64
|
+
* db.schema.alterTable('person')
|
|
65
|
+
* .addIndex('person_email_index')
|
|
66
|
+
* .column('email')
|
|
67
|
+
* .unique()
|
|
68
|
+
* .execute()
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* The generated SQL (MySQL):
|
|
72
|
+
*
|
|
73
|
+
* ```sql
|
|
74
|
+
* alter table `person` add unique index `person_email_index` (`email`)
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
addIndex(indexName: string): AlterTableAddIndexBuilder;
|
|
78
|
+
/**
|
|
79
|
+
* This can be used to drop index from table.
|
|
80
|
+
*
|
|
81
|
+
* ### Examples
|
|
82
|
+
*
|
|
83
|
+
* ```ts
|
|
84
|
+
* db.schema.alterTable('person')
|
|
85
|
+
* .dropIndex('person_email_index')
|
|
86
|
+
* .execute()
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* The generated SQL (MySQL):
|
|
90
|
+
*
|
|
91
|
+
* ```sql
|
|
92
|
+
* alter table `person` drop index `test_first_name_index`
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
dropIndex(indexName: string): AlterTableExecutor;
|
|
56
96
|
/**
|
|
57
97
|
* Calls the given function passing `this` as the only argument.
|
|
58
98
|
*
|
|
@@ -23,6 +23,10 @@ import { AlterTableExecutor } from './alter-table-executor.js';
|
|
|
23
23
|
import { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';
|
|
24
24
|
import { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';
|
|
25
25
|
import { PrimaryConstraintNode } from '../operation-node/primary-constraint-node.js';
|
|
26
|
+
import { DropIndexNode } from '../operation-node/drop-index-node.js';
|
|
27
|
+
import { AddIndexNode } from '../operation-node/add-index-node.js';
|
|
28
|
+
import { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';
|
|
29
|
+
import { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';
|
|
26
30
|
/**
|
|
27
31
|
* This builder can be used to create a `alter table` query.
|
|
28
32
|
*/
|
|
@@ -83,11 +87,12 @@ export class AlterTableBuilder {
|
|
|
83
87
|
/**
|
|
84
88
|
* See {@link CreateTableBuilder.addUniqueConstraint}
|
|
85
89
|
*/
|
|
86
|
-
addUniqueConstraint(constraintName, columns) {
|
|
90
|
+
addUniqueConstraint(constraintName, columns, build = noop) {
|
|
91
|
+
const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));
|
|
87
92
|
return new AlterTableExecutor({
|
|
88
93
|
...this.#props,
|
|
89
94
|
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
90
|
-
addConstraint: AddConstraintNode.create(
|
|
95
|
+
addConstraint: AddConstraintNode.create(uniqueConstraintBuilder.toOperationNode()),
|
|
91
96
|
}),
|
|
92
97
|
});
|
|
93
98
|
}
|
|
@@ -134,6 +139,58 @@ export class AlterTableBuilder {
|
|
|
134
139
|
}),
|
|
135
140
|
});
|
|
136
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* This can be used to add index to table.
|
|
144
|
+
*
|
|
145
|
+
* ### Examples
|
|
146
|
+
*
|
|
147
|
+
* ```ts
|
|
148
|
+
* db.schema.alterTable('person')
|
|
149
|
+
* .addIndex('person_email_index')
|
|
150
|
+
* .column('email')
|
|
151
|
+
* .unique()
|
|
152
|
+
* .execute()
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* The generated SQL (MySQL):
|
|
156
|
+
*
|
|
157
|
+
* ```sql
|
|
158
|
+
* alter table `person` add unique index `person_email_index` (`email`)
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
addIndex(indexName) {
|
|
162
|
+
return new AlterTableAddIndexBuilder({
|
|
163
|
+
...this.#props,
|
|
164
|
+
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
165
|
+
addIndex: AddIndexNode.create(indexName),
|
|
166
|
+
}),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* This can be used to drop index from table.
|
|
171
|
+
*
|
|
172
|
+
* ### Examples
|
|
173
|
+
*
|
|
174
|
+
* ```ts
|
|
175
|
+
* db.schema.alterTable('person')
|
|
176
|
+
* .dropIndex('person_email_index')
|
|
177
|
+
* .execute()
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
180
|
+
* The generated SQL (MySQL):
|
|
181
|
+
*
|
|
182
|
+
* ```sql
|
|
183
|
+
* alter table `person` drop index `test_first_name_index`
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
dropIndex(indexName) {
|
|
187
|
+
return new AlterTableExecutor({
|
|
188
|
+
...this.#props,
|
|
189
|
+
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
190
|
+
dropIndex: DropIndexNode.create(indexName),
|
|
191
|
+
}),
|
|
192
|
+
});
|
|
193
|
+
}
|
|
137
194
|
/**
|
|
138
195
|
* Calls the given function passing `this` as the only argument.
|
|
139
196
|
*
|
|
@@ -183,6 +183,31 @@ export declare class ColumnDefinitionBuilder implements OperationNodeSource {
|
|
|
183
183
|
* ```
|
|
184
184
|
*/
|
|
185
185
|
modifyFront(modifier: Expression<any>): ColumnDefinitionBuilder;
|
|
186
|
+
/**
|
|
187
|
+
* Adds `nulls not distinct` specifier.
|
|
188
|
+
* Should be used with `unique` constraint.
|
|
189
|
+
*
|
|
190
|
+
* This only works on some dialects like PostgreSQL.
|
|
191
|
+
*
|
|
192
|
+
* ### Examples
|
|
193
|
+
*
|
|
194
|
+
* ```ts
|
|
195
|
+
* db.schema.createTable('person')
|
|
196
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
197
|
+
* .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
|
|
198
|
+
* .execute()
|
|
199
|
+
* ```
|
|
200
|
+
*
|
|
201
|
+
* The generated SQL (PostgreSQL):
|
|
202
|
+
*
|
|
203
|
+
* ```sql
|
|
204
|
+
* create table "person" (
|
|
205
|
+
* "id" integer primary key,
|
|
206
|
+
* "first_name" varchar(30) unique nulls not distinct
|
|
207
|
+
* )
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
nullsNotDistinct(): ColumnDefinitionBuilder;
|
|
186
211
|
/**
|
|
187
212
|
* This can be used to add any additional SQL to the end of the column definition.
|
|
188
213
|
*
|
|
@@ -256,6 +256,33 @@ export class ColumnDefinitionBuilder {
|
|
|
256
256
|
modifyFront(modifier) {
|
|
257
257
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));
|
|
258
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Adds `nulls not distinct` specifier.
|
|
261
|
+
* Should be used with `unique` constraint.
|
|
262
|
+
*
|
|
263
|
+
* This only works on some dialects like PostgreSQL.
|
|
264
|
+
*
|
|
265
|
+
* ### Examples
|
|
266
|
+
*
|
|
267
|
+
* ```ts
|
|
268
|
+
* db.schema.createTable('person')
|
|
269
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
270
|
+
* .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
|
|
271
|
+
* .execute()
|
|
272
|
+
* ```
|
|
273
|
+
*
|
|
274
|
+
* The generated SQL (PostgreSQL):
|
|
275
|
+
*
|
|
276
|
+
* ```sql
|
|
277
|
+
* create table "person" (
|
|
278
|
+
* "id" integer primary key,
|
|
279
|
+
* "first_name" varchar(30) unique nulls not distinct
|
|
280
|
+
* )
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
nullsNotDistinct() {
|
|
284
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullsNotDistinct: true }));
|
|
285
|
+
}
|
|
259
286
|
/**
|
|
260
287
|
* This can be used to add any additional SQL to the end of the column definition.
|
|
261
288
|
*
|
|
@@ -22,6 +22,29 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
|
|
|
22
22
|
* Makes the index unique.
|
|
23
23
|
*/
|
|
24
24
|
unique(): CreateIndexBuilder<C>;
|
|
25
|
+
/**
|
|
26
|
+
* Adds `nulls not distinct` specifier to index.
|
|
27
|
+
* This only works on some dialects like PostgreSQL.
|
|
28
|
+
*
|
|
29
|
+
* ### Examples
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* db.schema.createIndex('person_first_name_index')
|
|
33
|
+
* .on('person')
|
|
34
|
+
* .column('first_name')
|
|
35
|
+
* .nullsNotDistinct()
|
|
36
|
+
* .execute()
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* The generated SQL (PostgreSQL):
|
|
40
|
+
*
|
|
41
|
+
* ```sql
|
|
42
|
+
* create index "person_first_name_index"
|
|
43
|
+
* on "test" ("first_name")
|
|
44
|
+
* nulls not distinct;
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
nullsNotDistinct(): CreateIndexBuilder<C>;
|
|
25
48
|
/**
|
|
26
49
|
* Specifies the table for the index.
|
|
27
50
|
*/
|
|
@@ -37,6 +37,36 @@ export class CreateIndexBuilder {
|
|
|
37
37
|
}),
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Adds `nulls not distinct` specifier to index.
|
|
42
|
+
* This only works on some dialects like PostgreSQL.
|
|
43
|
+
*
|
|
44
|
+
* ### Examples
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* db.schema.createIndex('person_first_name_index')
|
|
48
|
+
* .on('person')
|
|
49
|
+
* .column('first_name')
|
|
50
|
+
* .nullsNotDistinct()
|
|
51
|
+
* .execute()
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* The generated SQL (PostgreSQL):
|
|
55
|
+
*
|
|
56
|
+
* ```sql
|
|
57
|
+
* create index "person_first_name_index"
|
|
58
|
+
* on "test" ("first_name")
|
|
59
|
+
* nulls not distinct;
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
nullsNotDistinct() {
|
|
63
|
+
return new CreateIndexBuilder({
|
|
64
|
+
...this.#props,
|
|
65
|
+
node: CreateIndexNode.cloneWith(this.#props.node, {
|
|
66
|
+
nullsNotDistinct: true,
|
|
67
|
+
}),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
40
70
|
/**
|
|
41
71
|
* Specifies the table for the index.
|
|
42
72
|
*/
|
|
@@ -8,6 +8,7 @@ import { QueryId } from '../util/query-id.js';
|
|
|
8
8
|
import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
|
|
9
9
|
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|
10
10
|
import { Expression } from '../expression/expression.js';
|
|
11
|
+
import { UniqueConstraintNodeBuilderCallback } from './unique-constraint-builder.js';
|
|
11
12
|
/**
|
|
12
13
|
* This builder can be used to create a `create table` query.
|
|
13
14
|
*/
|
|
@@ -56,7 +57,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
56
57
|
* ```
|
|
57
58
|
*
|
|
58
59
|
* With this method, it's once again good to remember that Kysely just builds the
|
|
59
|
-
* query and doesn't provide the same API for all
|
|
60
|
+
* query and doesn't provide the same API for all databases. For example, some
|
|
60
61
|
* databases like older MySQL don't support the `references` statement in the
|
|
61
62
|
* column definition. Instead foreign key constraints need to be defined in the
|
|
62
63
|
* `create table` query. See the next example:
|
|
@@ -104,8 +105,13 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
104
105
|
* ```ts
|
|
105
106
|
* addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
|
|
106
107
|
* ```
|
|
108
|
+
*
|
|
109
|
+
* In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
|
|
110
|
+
* ```ts
|
|
111
|
+
* addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'], (builder) => builder.nullsNotDistinct())
|
|
112
|
+
* ```
|
|
107
113
|
*/
|
|
108
|
-
addUniqueConstraint(constraintName: string, columns: C[]): CreateTableBuilder<TB, C>;
|
|
114
|
+
addUniqueConstraint(constraintName: string, columns: C[], build?: UniqueConstraintNodeBuilderCallback): CreateTableBuilder<TB, C>;
|
|
109
115
|
/**
|
|
110
116
|
* Adds a check constraint.
|
|
111
117
|
*
|
|
@@ -205,6 +211,26 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
205
211
|
* ```
|
|
206
212
|
*/
|
|
207
213
|
modifyEnd(modifier: Expression<any>): CreateTableBuilder<TB, C>;
|
|
214
|
+
/**
|
|
215
|
+
* Allows to create table from `select` query.
|
|
216
|
+
*
|
|
217
|
+
* ### Examples
|
|
218
|
+
*
|
|
219
|
+
* ```ts
|
|
220
|
+
* db.schema.createTable('copy')
|
|
221
|
+
* .temporary()
|
|
222
|
+
* .as(db.selectFrom('person').select(['first_name', 'last_name']))
|
|
223
|
+
* .execute()
|
|
224
|
+
* ```
|
|
225
|
+
*
|
|
226
|
+
* The generated SQL (PostgreSQL):
|
|
227
|
+
*
|
|
228
|
+
* ```sql
|
|
229
|
+
* create temporary table "copy" as
|
|
230
|
+
* select "first_name", "last_name" from "person"
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
as(expression: Expression<unknown>): CreateTableBuilder<string, never>;
|
|
208
234
|
/**
|
|
209
235
|
* Calls the given function passing `this` as the only argument.
|
|
210
236
|
*
|