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
|
@@ -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/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,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/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
|
|
@@ -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) {
|
|
@@ -297,6 +298,7 @@ class OperationNodeTransformer {
|
|
|
297
298
|
onCommit: node.onCommit,
|
|
298
299
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|
299
300
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|
301
|
+
selectQuery: this.transformNode(node.selectQuery),
|
|
300
302
|
});
|
|
301
303
|
}
|
|
302
304
|
transformColumnDefinition(node) {
|
|
@@ -315,6 +317,7 @@ class OperationNodeTransformer {
|
|
|
315
317
|
generated: this.transformNode(node.generated),
|
|
316
318
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|
317
319
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|
320
|
+
nullsNotDistinct: node.nullsNotDistinct,
|
|
318
321
|
});
|
|
319
322
|
}
|
|
320
323
|
transformAddColumn(node) {
|
|
@@ -416,6 +419,7 @@ class OperationNodeTransformer {
|
|
|
416
419
|
using: this.transformNode(node.using),
|
|
417
420
|
ifNotExists: node.ifNotExists,
|
|
418
421
|
where: this.transformNode(node.where),
|
|
422
|
+
nullsNotDistinct: node.nullsNotDistinct,
|
|
419
423
|
});
|
|
420
424
|
}
|
|
421
425
|
transformList(node) {
|
|
@@ -445,6 +449,7 @@ class OperationNodeTransformer {
|
|
|
445
449
|
kind: 'UniqueConstraintNode',
|
|
446
450
|
columns: this.transformNodeList(node.columns),
|
|
447
451
|
name: this.transformNode(node.name),
|
|
452
|
+
nullsNotDistinct: node.nullsNotDistinct,
|
|
448
453
|
});
|
|
449
454
|
}
|
|
450
455
|
transformForeignKeyConstraint(node) {
|
|
@@ -533,6 +538,8 @@ class OperationNodeTransformer {
|
|
|
533
538
|
columnAlterations: this.transformNodeList(node.columnAlterations),
|
|
534
539
|
addConstraint: this.transformNode(node.addConstraint),
|
|
535
540
|
dropConstraint: this.transformNode(node.dropConstraint),
|
|
541
|
+
addIndex: this.transformNode(node.addIndex),
|
|
542
|
+
dropIndex: this.transformNode(node.dropIndex),
|
|
536
543
|
});
|
|
537
544
|
}
|
|
538
545
|
transformDropColumn(node) {
|
|
@@ -765,6 +772,16 @@ class OperationNodeTransformer {
|
|
|
765
772
|
values: this.transformNodeList(node.values),
|
|
766
773
|
});
|
|
767
774
|
}
|
|
775
|
+
transformAddIndex(node) {
|
|
776
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
777
|
+
kind: 'AddIndexNode',
|
|
778
|
+
name: this.transformNode(node.name),
|
|
779
|
+
columns: this.transformNodeList(node.columns),
|
|
780
|
+
unique: node.unique,
|
|
781
|
+
using: this.transformNode(node.using),
|
|
782
|
+
ifNotExists: node.ifNotExists,
|
|
783
|
+
});
|
|
784
|
+
}
|
|
768
785
|
transformDataType(node) {
|
|
769
786
|
// An Object.freezed leaf node. No need to clone.
|
|
770
787
|
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];
|
|
@@ -5,11 +5,14 @@ export interface UniqueConstraintNode extends OperationNode {
|
|
|
5
5
|
readonly kind: 'UniqueConstraintNode';
|
|
6
6
|
readonly columns: ReadonlyArray<ColumnNode>;
|
|
7
7
|
readonly name?: IdentifierNode;
|
|
8
|
+
readonly nullsNotDistinct?: boolean;
|
|
8
9
|
}
|
|
10
|
+
export type UniqueConstraintNodeProps = Omit<Partial<UniqueConstraintNode>, 'kind'>;
|
|
9
11
|
/**
|
|
10
12
|
* @internal
|
|
11
13
|
*/
|
|
12
14
|
export declare const UniqueConstraintNode: Readonly<{
|
|
13
15
|
is(node: OperationNode): node is UniqueConstraintNode;
|
|
14
|
-
create(columns: string[], constraintName?: string): UniqueConstraintNode;
|
|
16
|
+
create(columns: string[], constraintName?: string, nullsNotDistinct?: boolean): UniqueConstraintNode;
|
|
17
|
+
cloneWith(node: UniqueConstraintNode, props: UniqueConstraintNodeProps): UniqueConstraintNode;
|
|
15
18
|
}>;
|
|
@@ -11,11 +11,18 @@ exports.UniqueConstraintNode = (0, object_utils_js_1.freeze)({
|
|
|
11
11
|
is(node) {
|
|
12
12
|
return node.kind === 'UniqueConstraintNode';
|
|
13
13
|
},
|
|
14
|
-
create(columns, constraintName) {
|
|
14
|
+
create(columns, constraintName, nullsNotDistinct) {
|
|
15
15
|
return (0, object_utils_js_1.freeze)({
|
|
16
16
|
kind: 'UniqueConstraintNode',
|
|
17
17
|
columns: (0, object_utils_js_1.freeze)(columns.map(column_node_js_1.ColumnNode.create)),
|
|
18
18
|
name: constraintName ? identifier_node_js_1.IdentifierNode.create(constraintName) : undefined,
|
|
19
|
+
nullsNotDistinct,
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
cloneWith(node, props) {
|
|
23
|
+
return (0, object_utils_js_1.freeze)({
|
|
24
|
+
...node,
|
|
25
|
+
...props,
|
|
19
26
|
});
|
|
20
27
|
},
|
|
21
28
|
});
|
|
@@ -41,7 +41,7 @@ exports.parseFilterObject = parseFilterObject;
|
|
|
41
41
|
function parseFilterList(list, combinator) {
|
|
42
42
|
const combine = combinator === 'and' ? and_node_js_1.AndNode.create : or_node_js_1.OrNode.create;
|
|
43
43
|
if (list.length === 0) {
|
|
44
|
-
return value_node_js_1.ValueNode.createImmediate(combinator === 'and');
|
|
44
|
+
return binary_operation_node_js_1.BinaryOperationNode.create(value_node_js_1.ValueNode.createImmediate(1), operator_node_js_1.OperatorNode.create('='), value_node_js_1.ValueNode.createImmediate(combinator === 'and' ? 1 : 0));
|
|
45
45
|
}
|
|
46
46
|
let node = toOperationNode(list[0]);
|
|
47
47
|
for (let i = 1; i < list.length; ++i) {
|
|
@@ -1,2 +1,12 @@
|
|
|
1
|
-
import { ExtractTypeFromReferenceExpression
|
|
2
|
-
export type
|
|
1
|
+
import { ExtractTypeFromReferenceExpression } from './reference-parser.js';
|
|
2
|
+
export type ExtractTypeFromCoalesce1<DB, TB extends keyof DB, R1> = ExtractTypeFromReferenceExpression<DB, TB, R1>;
|
|
3
|
+
export type ExtractTypeFromCoalesce2<DB, TB extends keyof DB, R1, R2> = ExtractTypeFromCoalesceValues2<ExtractTypeFromReferenceExpression<DB, TB, R1>, ExtractTypeFromReferenceExpression<DB, TB, R2>>;
|
|
4
|
+
type ExtractTypeFromCoalesceValues2<V1, V2> = null extends V1 ? null extends V2 ? V1 | V2 : NotNull<V1 | V2> : NotNull<V1>;
|
|
5
|
+
export type ExtractTypeFromCoalesce3<DB, TB extends keyof DB, R1, R2, R3> = ExtractTypeFromCoalesceValues3<ExtractTypeFromReferenceExpression<DB, TB, R1>, ExtractTypeFromReferenceExpression<DB, TB, R2>, ExtractTypeFromReferenceExpression<DB, TB, R3>>;
|
|
6
|
+
type ExtractTypeFromCoalesceValues3<V1, V2, V3> = null extends V1 ? null extends V2 ? null extends V3 ? V1 | V2 | V3 : NotNull<V1 | V2 | V3> : NotNull<V1 | V2> : NotNull<V1>;
|
|
7
|
+
export type ExtractTypeFromCoalesce4<DB, TB extends keyof DB, R1, R2, R3, R4> = ExtractTypeFromCoalesceValues4<ExtractTypeFromReferenceExpression<DB, TB, R1>, ExtractTypeFromReferenceExpression<DB, TB, R2>, ExtractTypeFromReferenceExpression<DB, TB, R3>, ExtractTypeFromReferenceExpression<DB, TB, R4>>;
|
|
8
|
+
type ExtractTypeFromCoalesceValues4<V1, V2, V3, V4> = null extends V1 ? null extends V2 ? null extends V3 ? null extends V4 ? V1 | V2 | V3 | V4 : NotNull<V1 | V2 | V3 | V4> : NotNull<V1 | V2 | V3> : NotNull<V1 | V2> : NotNull<V1>;
|
|
9
|
+
export type ExtractTypeFromCoalesce5<DB, TB extends keyof DB, R1, R2, R3, R4, R5> = ExtractTypeFromCoalesceValues5<ExtractTypeFromReferenceExpression<DB, TB, R1>, ExtractTypeFromReferenceExpression<DB, TB, R2>, ExtractTypeFromReferenceExpression<DB, TB, R3>, ExtractTypeFromReferenceExpression<DB, TB, R4>, ExtractTypeFromReferenceExpression<DB, TB, R5>>;
|
|
10
|
+
type ExtractTypeFromCoalesceValues5<V1, V2, V3, V4, V5> = null extends V1 ? null extends V2 ? null extends V3 ? null extends V4 ? null extends V5 ? V1 | V2 | V3 | V4 | V5 : NotNull<V1 | V2 | V3 | V4 | V5> : NotNull<V1 | V2 | V3 | V4> : NotNull<V1 | V2 | V3> : NotNull<V1 | V2> : NotNull<V1>;
|
|
11
|
+
type NotNull<T> = Exclude<T, null>;
|
|
12
|
+
export {};
|
|
@@ -2,13 +2,13 @@ import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
3
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
4
4
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
6
6
|
/**
|
|
7
7
|
* Like `Expression<V>` but also accepts a select query with an output
|
|
8
8
|
* type extending `Record<string, V>`. This type is useful because SQL
|
|
9
9
|
* treats records with a single column as single values.
|
|
10
10
|
*/
|
|
11
|
-
export type OperandExpression<V> = Expression<V> |
|
|
11
|
+
export type OperandExpression<V> = Expression<V> | SelectQueryBuilderExpression<Record<string, V>>;
|
|
12
12
|
export type ExpressionOrFactory<DB, TB extends keyof DB, V> = OperandExpression<V> | OperandExpressionFactory<DB, TB, V>;
|
|
13
13
|
export type AliasedExpressionOrFactory<DB, TB extends keyof DB> = AliasedExpression<any, any> | AliasedExpressionFactory<DB, TB>;
|
|
14
14
|
export type ExpressionFactory<DB, TB extends keyof DB, V> = (eb: ExpressionBuilder<DB, TB>) => Expression<V>;
|
|
@@ -2,7 +2,7 @@ import { AliasNode } from '../operation-node/alias-node.js';
|
|
|
2
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
3
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
4
4
|
import { AnyColumn, AnyColumnWithTable, ExtractColumnType } from '../util/type-utils.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
6
6
|
import { ExpressionOrFactory } from './expression-parser.js';
|
|
7
7
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
8
8
|
import { SelectType } from '../util/column-type.js';
|
|
@@ -16,7 +16,8 @@ export type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyCo
|
|
|
16
16
|
export type SimpleReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
|
|
17
17
|
export type ReferenceExpression<DB, TB extends keyof DB> = SimpleReferenceExpression<DB, TB> | ExpressionOrFactory<DB, TB, any>;
|
|
18
18
|
export type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
19
|
-
export type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> =
|
|
19
|
+
export type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = SelectType<ExtractRawTypeFromReferenceExpression<DB, TB, RE, DV>>;
|
|
20
|
+
export type ExtractRawTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends (qb: any) => SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends Expression<infer O> ? O : RE extends (qb: any) => Expression<infer O> ? O : DV;
|
|
20
21
|
export type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, DV = unknown> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : DV;
|
|
21
22
|
export type OrderedColumnName<C extends string> = C extends `${string} ${infer O}` ? O extends OrderByDirection ? C : never : C;
|
|
22
23
|
export type ExtractColumnNameFromOrderedColumnName<C extends string> = C extends `${infer CL} ${infer O}` ? O extends OrderByDirection ? CL : never : C;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
2
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
3
3
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
4
|
-
import { Selection, AllSelection } from './select-parser.js';
|
|
4
|
+
import { Selection, AllSelection, CallbackSelection } from './select-parser.js';
|
|
5
5
|
export type ReturningRow<DB, TB extends keyof DB, O, SE> = O extends InsertResult ? Selection<DB, TB, SE> : O extends DeleteResult ? Selection<DB, TB, SE> : O extends UpdateResult ? Selection<DB, TB, SE> : O & Selection<DB, TB, SE>;
|
|
6
|
+
export type ReturningCallbackRow<DB, TB extends keyof DB, O, CB> = O extends InsertResult ? CallbackSelection<DB, TB, CB> : O extends DeleteResult ? CallbackSelection<DB, TB, CB> : O extends UpdateResult ? CallbackSelection<DB, TB, CB> : O & CallbackSelection<DB, TB, CB>;
|
|
6
7
|
export type ReturningAllRow<DB, TB extends keyof DB, O> = O extends InsertResult ? AllSelection<DB, TB> : O extends DeleteResult ? AllSelection<DB, TB> : O extends UpdateResult ? AllSelection<DB, TB> : O & AllSelection<DB, TB>;
|
|
@@ -3,23 +3,34 @@ import { SelectionNode } from '../operation-node/selection-node.js';
|
|
|
3
3
|
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, DrainOuterGeneric, ExtractColumnType } from '../util/type-utils.js';
|
|
4
4
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
5
5
|
import { AliasedExpressionOrFactory } from './expression-parser.js';
|
|
6
|
-
import {
|
|
6
|
+
import { SelectType } from '../util/column-type.js';
|
|
7
7
|
import { AliasedExpression } from '../expression/expression.js';
|
|
8
8
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
9
9
|
export type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedExpressionOrFactory<DB, TB>;
|
|
10
|
+
export type SelectCallback<DB, TB extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => ReadonlyArray<SelectExpression<DB, TB>>;
|
|
11
|
+
/**
|
|
12
|
+
* Turns a SelectExpression or a union of them into a selection object.
|
|
13
|
+
*/
|
|
14
|
+
export type Selection<DB, TB extends keyof DB, SE> = [DB] extends [unknown] ? {
|
|
15
|
+
[E in FlattenSelectExpression<SE> as ExtractAliasFromSelectExpression<E>]: SelectType<ExtractTypeFromSelectExpression<DB, TB, E>>;
|
|
16
|
+
} : {};
|
|
17
|
+
/**
|
|
18
|
+
* Turns a SelectCallback into a selection object.
|
|
19
|
+
*/
|
|
20
|
+
export type CallbackSelection<DB, TB extends keyof DB, CB> = CB extends (eb: any) => ReadonlyArray<infer SE> ? Selection<DB, TB, SE> : never;
|
|
10
21
|
export type SelectArg<DB, TB extends keyof DB, SE extends SelectExpression<DB, TB>> = SE | ReadonlyArray<SE> | ((eb: ExpressionBuilder<DB, TB>) => ReadonlyArray<SE>);
|
|
11
|
-
|
|
12
|
-
[
|
|
13
|
-
}
|
|
22
|
+
type FlattenSelectExpression<SE> = SE extends DynamicReferenceBuilder<infer RA> ? {
|
|
23
|
+
[R in RA]: DynamicReferenceBuilder<R>;
|
|
24
|
+
}[RA] : SE;
|
|
14
25
|
type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedExpression<any, infer EA> ? EA : SE extends (qb: any) => AliasedExpression<any, infer EA> ? EA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
|
|
15
26
|
type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
|
|
16
|
-
type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE
|
|
17
|
-
type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string
|
|
18
|
-
export type AllSelection<DB, TB extends keyof DB> = DrainOuterGeneric<
|
|
27
|
+
type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE> : SE extends AliasedSelectQueryBuilder<infer O, any> ? O[keyof O] | null : SE extends (eb: any) => AliasedSelectQueryBuilder<infer O, any> ? O[keyof O] | null : SE extends AliasedExpression<infer O, any> ? O : SE extends (eb: any) => AliasedExpression<infer O, any> ? O : SE extends DynamicReferenceBuilder<infer RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA> | undefined : never;
|
|
28
|
+
type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string> = SE extends `${infer SC}.${infer T}.${infer C} as ${string}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : SE extends `${infer T}.${infer C} as ${string}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : SE extends `${infer C} as ${string}` ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : SE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : SE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never;
|
|
29
|
+
export type AllSelection<DB, TB extends keyof DB> = DrainOuterGeneric<{
|
|
19
30
|
[C in AnyColumn<DB, TB>]: {
|
|
20
|
-
[T in TB]: C extends keyof DB[T] ? DB[T][C] : never
|
|
31
|
+
[T in TB]: SelectType<C extends keyof DB[T] ? DB[T][C] : never>;
|
|
21
32
|
}[TB];
|
|
22
|
-
}
|
|
33
|
+
}>;
|
|
23
34
|
export declare function parseSelectArg(selection: SelectArg<any, any, SelectExpression<any, any>>): SelectionNode[];
|
|
24
35
|
export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
|
|
25
36
|
export {};
|
|
@@ -2,9 +2,12 @@ import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
|
2
2
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
3
3
|
import { UpdateKeys, UpdateType } from '../util/column-type.js';
|
|
4
4
|
import { ValueExpression } from './value-parser.js';
|
|
5
|
+
import { ExtractRawTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
|
|
5
6
|
export type UpdateObject<DB, TB extends keyof DB, UT extends keyof DB = TB> = {
|
|
6
7
|
[C in UpdateKeys<DB[UT]>]?: ValueExpression<DB, TB, UpdateType<DB[UT][C]>> | undefined;
|
|
7
8
|
};
|
|
8
9
|
export type UpdateObjectFactory<DB, TB extends keyof DB, UT extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => UpdateObject<DB, TB, UT>;
|
|
9
|
-
export type
|
|
10
|
-
export
|
|
10
|
+
export type UpdateObjectExpression<DB, TB extends keyof DB, UT extends keyof DB = TB> = UpdateObject<DB, TB, UT> | UpdateObjectFactory<DB, TB, UT>;
|
|
11
|
+
export type ExtractUpdateTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = UpdateType<ExtractRawTypeFromReferenceExpression<DB, TB, RE, DV>>;
|
|
12
|
+
export declare function parseUpdate(...args: [UpdateObjectExpression<any, any, any>] | [ReferenceExpression<any, any>, ValueExpression<any, any, any>]): ReadonlyArray<ColumnUpdateNode>;
|
|
13
|
+
export declare function parseUpdateObjectExpression(update: UpdateObjectExpression<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
|