kysely 0.27.3 → 0.27.5
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/.renovaterc.json +3 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +7 -7
- package/deno.check.d.ts +86 -0
- package/deno.check.json +21 -0
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +13 -3
- package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
- package/dist/cjs/dialect/dialect-adapter.d.ts +16 -2
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +12 -7
- package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +83 -55
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +114 -48
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/cjs/driver/database-connection.d.ts +3 -1
- package/dist/cjs/driver/dummy-driver.d.ts +13 -12
- package/dist/cjs/driver/dummy-driver.js +13 -12
- package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/cjs/dynamic/dynamic.d.ts +7 -7
- package/dist/cjs/dynamic/dynamic.js +7 -7
- package/dist/cjs/expression/expression-builder.d.ts +153 -62
- package/dist/cjs/expression/expression-builder.js +2 -3
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
- package/dist/cjs/expression/expression.d.ts +40 -5
- package/dist/cjs/expression/expression.js +2 -3
- package/dist/cjs/helpers/mssql.d.ts +74 -14
- package/dist/cjs/helpers/mssql.js +77 -18
- package/dist/cjs/helpers/mysql.d.ts +17 -13
- package/dist/cjs/helpers/mysql.js +20 -17
- package/dist/cjs/helpers/postgres.d.ts +11 -8
- package/dist/cjs/helpers/postgres.js +14 -12
- package/dist/cjs/helpers/sqlite.d.ts +41 -16
- package/dist/cjs/helpers/sqlite.js +44 -20
- package/dist/cjs/index.d.ts +28 -21
- package/dist/cjs/index.js +28 -21
- package/dist/cjs/kysely.d.ts +100 -42
- package/dist/cjs/kysely.js +63 -39
- package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/migration/migrator.d.ts +82 -14
- package/dist/cjs/migration/migrator.js +82 -14
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
- package/dist/cjs/operation-node/case-node.d.ts +1 -1
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
- package/dist/cjs/operation-node/data-type-node.js +17 -3
- package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
- package/dist/cjs/operation-node/having-node.d.ts +1 -1
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/on-node.d.ts +1 -1
- package/dist/cjs/operation-node/operation-node-source.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +11 -3
- package/dist/cjs/operation-node/operation-node-transformer.js +26 -3
- 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 +8 -6
- package/dist/cjs/operation-node/output-node.d.ts +13 -0
- package/dist/cjs/operation-node/output-node.js +26 -0
- package/dist/cjs/operation-node/query-node.d.ts +15 -6
- package/dist/cjs/operation-node/query-node.js +17 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.js +6 -8
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/where-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.js +5 -6
- package/dist/cjs/parser/data-type-parser.js +1 -2
- package/dist/cjs/parser/default-value-parser.js +1 -2
- package/dist/cjs/parser/expression-parser.js +3 -4
- package/dist/cjs/parser/fetch-parser.js +1 -2
- package/dist/cjs/parser/group-by-parser.js +1 -2
- package/dist/cjs/parser/identifier-parser.js +1 -2
- package/dist/cjs/parser/insert-values-parser.js +1 -2
- package/dist/cjs/parser/join-parser.js +1 -2
- package/dist/cjs/parser/merge-parser.js +2 -3
- package/dist/cjs/parser/on-commit-action-parse.js +1 -2
- package/dist/cjs/parser/on-modify-action-parser.js +1 -2
- package/dist/cjs/parser/order-by-parser.js +3 -4
- package/dist/cjs/parser/parse-utils.js +4 -5
- package/dist/cjs/parser/partition-by-parser.js +1 -2
- package/dist/cjs/parser/reference-parser.js +8 -9
- package/dist/cjs/parser/returning-parser.d.ts +4 -3
- package/dist/cjs/parser/select-parser.js +2 -3
- package/dist/cjs/parser/set-operation-parser.js +1 -2
- package/dist/cjs/parser/table-parser.js +4 -5
- package/dist/cjs/parser/top-parser.js +1 -2
- package/dist/cjs/parser/unary-operation-parser.js +3 -4
- package/dist/cjs/parser/update-set-parser.js +2 -3
- package/dist/cjs/parser/value-parser.js +4 -5
- package/dist/cjs/parser/with-parser.js +1 -2
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +54 -27
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +26 -21
- package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
- package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
- package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +219 -43
- package/dist/cjs/query-builder/delete-query-builder.js +95 -31
- package/dist/cjs/query-builder/function-module.d.ts +40 -93
- package/dist/cjs/query-builder/function-module.js +1 -2
- package/dist/cjs/query-builder/insert-query-builder.d.ts +326 -67
- package/dist/cjs/query-builder/insert-query-builder.js +212 -61
- package/dist/cjs/query-builder/insert-result.d.ts +10 -5
- package/dist/cjs/query-builder/insert-result.js +10 -5
- package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
- package/dist/cjs/query-builder/json-path-builder.js +8 -5
- package/dist/cjs/query-builder/merge-query-builder.d.ts +312 -10
- package/dist/cjs/query-builder/merge-query-builder.js +98 -7
- package/dist/cjs/query-builder/no-result-error.js +2 -2
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +53 -20
- package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
- package/dist/cjs/query-builder/output-interface.d.ts +138 -0
- package/dist/cjs/query-builder/output-interface.js +2 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +7 -5
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +370 -73
- package/dist/cjs/query-builder/select-query-builder.js +14 -9
- package/dist/cjs/query-builder/update-query-builder.d.ts +225 -31
- package/dist/cjs/query-builder/update-query-builder.js +96 -17
- package/dist/cjs/query-builder/update-result.d.ts +9 -0
- package/dist/cjs/query-builder/update-result.js +9 -0
- package/dist/cjs/query-builder/where-interface.d.ts +6 -2
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +45 -1
- package/dist/cjs/query-creator.d.ts +122 -21
- package/dist/cjs/query-creator.js +56 -3
- package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
- package/dist/cjs/raw-builder/raw-builder.js +1 -2
- package/dist/cjs/raw-builder/sql.d.ts +31 -12
- package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
- package/dist/cjs/schema/alter-column-builder.js +20 -3
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +44 -10
- package/dist/cjs/schema/alter-table-add-index-builder.js +27 -10
- package/dist/cjs/schema/alter-table-builder.js +1 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +286 -24
- package/dist/cjs/schema/column-definition-builder.js +288 -24
- package/dist/cjs/schema/create-table-builder.d.ts +86 -33
- package/dist/cjs/schema/create-table-builder.js +86 -33
- package/dist/cjs/util/assert.js +2 -3
- package/dist/cjs/util/column-type.d.ts +5 -9
- package/dist/cjs/util/compilable.js +1 -2
- package/dist/cjs/util/json-object-args.js +1 -2
- package/dist/cjs/util/log-once.js +1 -2
- package/dist/cjs/util/object-utils.js +38 -26
- package/dist/cjs/util/performance-now.js +1 -2
- package/dist/cjs/util/prevent-await.js +1 -2
- package/dist/cjs/util/query-id.js +1 -2
- package/dist/cjs/util/random-string.js +1 -2
- package/dist/cjs/util/require-all-props.d.ts +4 -2
- package/dist/cjs/util/require-all-props.js +5 -4
- package/dist/cjs/util/stack-trace-utils.js +1 -2
- package/dist/cjs/util/streamable.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +4 -2
- package/dist/esm/dialect/dialect-adapter-base.d.ts +13 -3
- package/dist/esm/dialect/dialect-adapter-base.js +4 -1
- package/dist/esm/dialect/dialect-adapter.d.ts +16 -2
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +12 -7
- package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +83 -55
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +114 -48
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/esm/driver/database-connection.d.ts +3 -1
- package/dist/esm/driver/dummy-driver.d.ts +13 -12
- package/dist/esm/driver/dummy-driver.js +13 -12
- package/dist/esm/dynamic/dynamic.d.ts +7 -7
- package/dist/esm/dynamic/dynamic.js +7 -7
- package/dist/esm/expression/expression-builder.d.ts +153 -62
- package/dist/esm/expression/expression-wrapper.d.ts +92 -23
- package/dist/esm/expression/expression.d.ts +40 -5
- package/dist/esm/helpers/mssql.d.ts +74 -14
- package/dist/esm/helpers/mssql.js +74 -14
- package/dist/esm/helpers/mysql.d.ts +17 -13
- package/dist/esm/helpers/mysql.js +17 -13
- package/dist/esm/helpers/postgres.d.ts +11 -8
- package/dist/esm/helpers/postgres.js +11 -8
- package/dist/esm/helpers/sqlite.d.ts +41 -16
- package/dist/esm/helpers/sqlite.js +41 -16
- package/dist/esm/index.d.ts +28 -21
- package/dist/esm/index.js +28 -21
- package/dist/esm/kysely.d.ts +100 -42
- package/dist/esm/kysely.js +61 -37
- package/dist/esm/migration/file-migration-provider.d.ts +2 -2
- package/dist/esm/migration/file-migration-provider.js +2 -2
- package/dist/esm/migration/migrator.d.ts +82 -14
- package/dist/esm/migration/migrator.js +82 -14
- package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/esm/operation-node/aggregate-function-node.js +9 -0
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
- package/dist/esm/operation-node/case-node.d.ts +1 -1
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/data-type-node.d.ts +2 -2
- package/dist/esm/operation-node/data-type-node.js +15 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
- package/dist/esm/operation-node/having-node.d.ts +1 -1
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +3 -0
- package/dist/esm/operation-node/on-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +11 -3
- package/dist/esm/operation-node/operation-node-transformer.js +26 -3
- 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/output-node.d.ts +13 -0
- package/dist/esm/operation-node/output-node.js +24 -0
- package/dist/esm/operation-node/query-node.d.ts +15 -6
- package/dist/esm/operation-node/query-node.js +17 -0
- package/dist/esm/operation-node/select-query-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.js +6 -8
- package/dist/esm/operation-node/update-query-node.d.ts +3 -0
- package/dist/esm/operation-node/where-node.d.ts +1 -1
- package/dist/esm/parser/returning-parser.d.ts +4 -3
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +54 -27
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +26 -21
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
- package/dist/esm/plugin/noop-plugin.d.ts +28 -6
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
- package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +219 -43
- package/dist/esm/query-builder/delete-query-builder.js +95 -31
- package/dist/esm/query-builder/function-module.d.ts +40 -93
- package/dist/esm/query-builder/insert-query-builder.d.ts +326 -67
- package/dist/esm/query-builder/insert-query-builder.js +212 -61
- package/dist/esm/query-builder/insert-result.d.ts +10 -5
- package/dist/esm/query-builder/insert-result.js +10 -5
- package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
- package/dist/esm/query-builder/json-path-builder.js +8 -5
- package/dist/esm/query-builder/merge-query-builder.d.ts +312 -10
- package/dist/esm/query-builder/merge-query-builder.js +98 -7
- package/dist/esm/query-builder/on-conflict-builder.d.ts +53 -20
- package/dist/esm/query-builder/on-conflict-builder.js +41 -16
- package/dist/esm/query-builder/output-interface.d.ts +138 -0
- package/dist/esm/query-builder/output-interface.js +2 -0
- package/dist/esm/query-builder/returning-interface.d.ts +7 -5
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +370 -73
- package/dist/esm/query-builder/select-query-builder.js +13 -7
- package/dist/esm/query-builder/update-query-builder.d.ts +225 -31
- package/dist/esm/query-builder/update-query-builder.js +96 -17
- package/dist/esm/query-builder/update-result.d.ts +9 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-builder/where-interface.d.ts +6 -2
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +45 -1
- package/dist/esm/query-creator.d.ts +122 -21
- package/dist/esm/query-creator.js +56 -3
- package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
- package/dist/esm/raw-builder/sql.d.ts +31 -12
- package/dist/esm/schema/alter-column-builder.d.ts +17 -3
- package/dist/esm/schema/alter-column-builder.js +20 -3
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +44 -10
- package/dist/esm/schema/alter-table-add-index-builder.js +27 -10
- package/dist/esm/schema/alter-table-builder.js +1 -2
- package/dist/esm/schema/column-definition-builder.d.ts +286 -24
- package/dist/esm/schema/column-definition-builder.js +288 -24
- package/dist/esm/schema/create-table-builder.d.ts +86 -33
- package/dist/esm/schema/create-table-builder.js +86 -33
- package/dist/esm/util/column-type.d.ts +5 -9
- package/dist/esm/util/object-utils.js +18 -5
- package/dist/esm/util/require-all-props.d.ts +4 -2
- package/dist/esm/util/require-all-props.js +4 -2
- package/dist/esm/util/streamable.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +4 -2
- package/package.json +30 -24
|
@@ -20,16 +20,29 @@ exports.NO_MIGRATIONS = (0, object_utils_js_1.freeze)({ __noMigrations__: true }
|
|
|
20
20
|
* other way.
|
|
21
21
|
*
|
|
22
22
|
* ```ts
|
|
23
|
-
* import { promises as fs } from 'fs'
|
|
24
|
-
* import path from 'path'
|
|
23
|
+
* import { promises as fs } from 'node:fs'
|
|
24
|
+
* import path from 'node:path'
|
|
25
|
+
* import * as Sqlite from 'better-sqlite3'
|
|
26
|
+
* import {
|
|
27
|
+
* FileMigrationProvider,
|
|
28
|
+
* Kysely,
|
|
29
|
+
* Migrator,
|
|
30
|
+
* SqliteDialect
|
|
31
|
+
* } from 'kysely'
|
|
32
|
+
*
|
|
33
|
+
* const db = new Kysely<any>({
|
|
34
|
+
* dialect: new SqliteDialect({
|
|
35
|
+
* database: Sqlite(':memory:')
|
|
36
|
+
* })
|
|
37
|
+
* })
|
|
25
38
|
*
|
|
26
39
|
* const migrator = new Migrator({
|
|
27
40
|
* db,
|
|
28
41
|
* provider: new FileMigrationProvider({
|
|
29
42
|
* fs,
|
|
30
|
-
* path,
|
|
31
43
|
* // Path to the folder that contains all your migrations.
|
|
32
|
-
* migrationFolder: 'some/path/to/migrations'
|
|
44
|
+
* migrationFolder: 'some/path/to/migrations',
|
|
45
|
+
* path,
|
|
33
46
|
* })
|
|
34
47
|
* })
|
|
35
48
|
* ```
|
|
@@ -78,19 +91,18 @@ class Migrator {
|
|
|
78
91
|
* ### Examples
|
|
79
92
|
*
|
|
80
93
|
* ```ts
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* }),
|
|
86
|
-
* })
|
|
94
|
+
* import { promises as fs } from 'node:fs'
|
|
95
|
+
* import path from 'node:path'
|
|
96
|
+
* import * as Sqlite from 'better-sqlite3'
|
|
97
|
+
* import { FileMigrationProvider, Migrator } from 'kysely'
|
|
87
98
|
*
|
|
88
99
|
* const migrator = new Migrator({
|
|
89
100
|
* db,
|
|
90
|
-
* provider: new FileMigrationProvider(
|
|
91
|
-
*
|
|
92
|
-
* 'some/path/to/migrations'
|
|
93
|
-
*
|
|
101
|
+
* provider: new FileMigrationProvider({
|
|
102
|
+
* fs,
|
|
103
|
+
* migrationFolder: 'some/path/to/migrations',
|
|
104
|
+
* path,
|
|
105
|
+
* })
|
|
94
106
|
* })
|
|
95
107
|
*
|
|
96
108
|
* const { error, results } = await migrator.migrateToLatest()
|
|
@@ -123,6 +135,20 @@ class Migrator {
|
|
|
123
135
|
* ### Examples
|
|
124
136
|
*
|
|
125
137
|
* ```ts
|
|
138
|
+
* import { promises as fs } from 'node:fs'
|
|
139
|
+
* import path from 'node:path'
|
|
140
|
+
* import { FileMigrationProvider, Migrator } from 'kysely'
|
|
141
|
+
*
|
|
142
|
+
* const migrator = new Migrator({
|
|
143
|
+
* db,
|
|
144
|
+
* provider: new FileMigrationProvider({
|
|
145
|
+
* fs,
|
|
146
|
+
* // Path to the folder that contains all your migrations.
|
|
147
|
+
* migrationFolder: 'some/path/to/migrations',
|
|
148
|
+
* path,
|
|
149
|
+
* })
|
|
150
|
+
* })
|
|
151
|
+
*
|
|
126
152
|
* await migrator.migrateTo('some_migration')
|
|
127
153
|
* ```
|
|
128
154
|
*
|
|
@@ -132,6 +158,20 @@ class Migrator {
|
|
|
132
158
|
* you can use a special constant `NO_MIGRATIONS`:
|
|
133
159
|
*
|
|
134
160
|
* ```ts
|
|
161
|
+
* import { promises as fs } from 'node:fs'
|
|
162
|
+
* import path from 'node:path'
|
|
163
|
+
* import { FileMigrationProvider, Migrator, NO_MIGRATIONS } from 'kysely'
|
|
164
|
+
*
|
|
165
|
+
* const migrator = new Migrator({
|
|
166
|
+
* db,
|
|
167
|
+
* provider: new FileMigrationProvider({
|
|
168
|
+
* fs,
|
|
169
|
+
* // Path to the folder that contains all your migrations.
|
|
170
|
+
* migrationFolder: 'some/path/to/migrations',
|
|
171
|
+
* path,
|
|
172
|
+
* })
|
|
173
|
+
* })
|
|
174
|
+
*
|
|
135
175
|
* await migrator.migrateTo(NO_MIGRATIONS)
|
|
136
176
|
* ```
|
|
137
177
|
*/
|
|
@@ -170,6 +210,20 @@ class Migrator {
|
|
|
170
210
|
* ### Examples
|
|
171
211
|
*
|
|
172
212
|
* ```ts
|
|
213
|
+
* import { promises as fs } from 'node:fs'
|
|
214
|
+
* import path from 'node:path'
|
|
215
|
+
* import { FileMigrationProvider, Migrator } from 'kysely'
|
|
216
|
+
*
|
|
217
|
+
* const migrator = new Migrator({
|
|
218
|
+
* db,
|
|
219
|
+
* provider: new FileMigrationProvider({
|
|
220
|
+
* fs,
|
|
221
|
+
* // Path to the folder that contains all your migrations.
|
|
222
|
+
* migrationFolder: 'some/path/to/migrations',
|
|
223
|
+
* path,
|
|
224
|
+
* })
|
|
225
|
+
* })
|
|
226
|
+
*
|
|
173
227
|
* await migrator.migrateUp()
|
|
174
228
|
* ```
|
|
175
229
|
*/
|
|
@@ -187,6 +241,20 @@ class Migrator {
|
|
|
187
241
|
* ### Examples
|
|
188
242
|
*
|
|
189
243
|
* ```ts
|
|
244
|
+
* import { promises as fs } from 'node:fs'
|
|
245
|
+
* import path from 'node:path'
|
|
246
|
+
* import { FileMigrationProvider, Migrator } from 'kysely'
|
|
247
|
+
*
|
|
248
|
+
* const migrator = new Migrator({
|
|
249
|
+
* db,
|
|
250
|
+
* provider: new FileMigrationProvider({
|
|
251
|
+
* fs,
|
|
252
|
+
* // Path to the folder that contains all your migrations.
|
|
253
|
+
* migrationFolder: 'some/path/to/migrations',
|
|
254
|
+
* path,
|
|
255
|
+
* })
|
|
256
|
+
* })
|
|
257
|
+
*
|
|
190
258
|
* await migrator.migrateDown()
|
|
191
259
|
* ```
|
|
192
260
|
*/
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
2
|
import { OverNode } from './over-node.js';
|
|
3
3
|
import { WhereNode } from './where-node.js';
|
|
4
|
+
import { OrderByNode } from './order-by-node.js';
|
|
5
|
+
import { OrderByItemNode } from './order-by-item-node.js';
|
|
4
6
|
export interface AggregateFunctionNode extends OperationNode {
|
|
5
7
|
readonly kind: 'AggregateFunctionNode';
|
|
6
8
|
readonly func: string;
|
|
7
9
|
readonly aggregated: readonly OperationNode[];
|
|
8
10
|
readonly distinct?: boolean;
|
|
11
|
+
readonly orderBy?: OrderByNode;
|
|
9
12
|
readonly filter?: WhereNode;
|
|
10
13
|
readonly over?: OverNode;
|
|
11
14
|
}
|
|
@@ -16,6 +19,7 @@ export declare const AggregateFunctionNode: Readonly<{
|
|
|
16
19
|
is(node: OperationNode): node is AggregateFunctionNode;
|
|
17
20
|
create(aggregateFunction: string, aggregated?: readonly OperationNode[]): AggregateFunctionNode;
|
|
18
21
|
cloneWithDistinct(aggregateFunctionNode: AggregateFunctionNode): AggregateFunctionNode;
|
|
22
|
+
cloneWithOrderBy(aggregateFunctionNode: AggregateFunctionNode, orderItems: ReadonlyArray<OrderByItemNode>): AggregateFunctionNode;
|
|
19
23
|
cloneWithFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
|
|
20
24
|
cloneWithOrFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
|
|
21
25
|
cloneWithOver(aggregateFunctionNode: AggregateFunctionNode, over?: OverNode): AggregateFunctionNode;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AggregateFunctionNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
5
|
const where_node_js_1 = require("./where-node.js");
|
|
6
|
+
const order_by_node_js_1 = require("./order-by-node.js");
|
|
6
7
|
/**
|
|
7
8
|
* @internal
|
|
8
9
|
*/
|
|
@@ -23,6 +24,14 @@ exports.AggregateFunctionNode = (0, object_utils_js_1.freeze)({
|
|
|
23
24
|
distinct: true,
|
|
24
25
|
});
|
|
25
26
|
},
|
|
27
|
+
cloneWithOrderBy(aggregateFunctionNode, orderItems) {
|
|
28
|
+
return (0, object_utils_js_1.freeze)({
|
|
29
|
+
...aggregateFunctionNode,
|
|
30
|
+
orderBy: aggregateFunctionNode.orderBy
|
|
31
|
+
? order_by_node_js_1.OrderByNode.cloneWithItems(aggregateFunctionNode.orderBy, orderItems)
|
|
32
|
+
: order_by_node_js_1.OrderByNode.create(orderItems),
|
|
33
|
+
});
|
|
34
|
+
},
|
|
26
35
|
cloneWithFilter(aggregateFunctionNode, filter) {
|
|
27
36
|
return (0, object_utils_js_1.freeze)({
|
|
28
37
|
...aggregateFunctionNode,
|
|
@@ -17,5 +17,5 @@ export interface AlterColumnNode extends OperationNode {
|
|
|
17
17
|
*/
|
|
18
18
|
export declare const AlterColumnNode: Readonly<{
|
|
19
19
|
is(node: OperationNode): node is AlterColumnNode;
|
|
20
|
-
create<T extends
|
|
20
|
+
create<T extends keyof AlterColumnNodeProps>(column: string, prop: T, value: Required<AlterColumnNodeProps>[T]): AlterColumnNode;
|
|
21
21
|
}>;
|
|
@@ -15,5 +15,5 @@ export declare const CaseNode: Readonly<{
|
|
|
15
15
|
create(value?: OperationNode): CaseNode;
|
|
16
16
|
cloneWithWhen(caseNode: CaseNode, when: WhenNode): CaseNode;
|
|
17
17
|
cloneWithThen(caseNode: CaseNode, then: OperationNode): CaseNode;
|
|
18
|
-
cloneWith(caseNode: CaseNode, props: Partial<Pick<CaseNode,
|
|
18
|
+
cloneWith(caseNode: CaseNode, props: Partial<Pick<CaseNode, "else" | "isStatement">>): CaseNode;
|
|
19
19
|
}>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
-
declare const SIMPLE_COLUMN_DATA_TYPES: readonly ["varchar", "char", "text", "integer", "int2", "int4", "int8", "smallint", "bigint", "boolean", "real", "double precision", "float4", "float8", "decimal", "numeric", "binary", "bytea", "date", "datetime", "time", "timetz", "timestamp", "timestamptz", "serial", "bigserial", "uuid", "json", "jsonb", "blob"];
|
|
2
|
+
declare const SIMPLE_COLUMN_DATA_TYPES: readonly ["varchar", "char", "text", "integer", "int2", "int4", "int8", "smallint", "bigint", "boolean", "real", "double precision", "float4", "float8", "decimal", "numeric", "binary", "bytea", "date", "datetime", "time", "timetz", "timestamp", "timestamptz", "serial", "bigserial", "uuid", "json", "jsonb", "blob", "varbinary", "int4range", "int4multirange", "int8range", "int8multirange", "numrange", "nummultirange", "tsrange", "tsmultirange", "tstzrange", "tstzmultirange", "daterange", "datemultirange"];
|
|
3
3
|
type SimpleColumnDataType = (typeof SIMPLE_COLUMN_DATA_TYPES)[number];
|
|
4
|
-
export type ColumnDataType = SimpleColumnDataType | `varchar(${number})` | `char(${number})` | `decimal(${number}, ${number})` | `numeric(${number}, ${number})` | `binary(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})`;
|
|
4
|
+
export type ColumnDataType = SimpleColumnDataType | `varchar(${number})` | `char(${number})` | `decimal(${number}, ${number})` | `numeric(${number}, ${number})` | `binary(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`;
|
|
5
5
|
export type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
|
|
6
6
|
export interface DataTypeNode extends OperationNode {
|
|
7
7
|
readonly kind: 'DataTypeNode';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DataTypeNode = void 0;
|
|
4
|
+
exports.isColumnDataType = isColumnDataType;
|
|
4
5
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
6
|
const SIMPLE_COLUMN_DATA_TYPES = [
|
|
6
7
|
'varchar',
|
|
@@ -33,6 +34,19 @@ const SIMPLE_COLUMN_DATA_TYPES = [
|
|
|
33
34
|
'json',
|
|
34
35
|
'jsonb',
|
|
35
36
|
'blob',
|
|
37
|
+
'varbinary',
|
|
38
|
+
'int4range',
|
|
39
|
+
'int4multirange',
|
|
40
|
+
'int8range',
|
|
41
|
+
'int8multirange',
|
|
42
|
+
'numrange',
|
|
43
|
+
'nummultirange',
|
|
44
|
+
'tsrange',
|
|
45
|
+
'tsmultirange',
|
|
46
|
+
'tstzrange',
|
|
47
|
+
'tstzmultirange',
|
|
48
|
+
'daterange',
|
|
49
|
+
'datemultirange',
|
|
36
50
|
];
|
|
37
51
|
const COLUMN_DATA_TYPE_REGEX = [
|
|
38
52
|
/^varchar\(\d+\)$/,
|
|
@@ -42,9 +56,10 @@ const COLUMN_DATA_TYPE_REGEX = [
|
|
|
42
56
|
/^binary\(\d+\)$/,
|
|
43
57
|
/^datetime\(\d+\)$/,
|
|
44
58
|
/^time\(\d+\)$/,
|
|
45
|
-
/^
|
|
59
|
+
/^timetz\(\d+\)$/,
|
|
46
60
|
/^timestamp\(\d+\)$/,
|
|
47
61
|
/^timestamptz\(\d+\)$/,
|
|
62
|
+
/^varbinary\(\d+\)$/,
|
|
48
63
|
];
|
|
49
64
|
/**
|
|
50
65
|
* @internal
|
|
@@ -69,4 +84,3 @@ function isColumnDataType(dataType) {
|
|
|
69
84
|
}
|
|
70
85
|
return false;
|
|
71
86
|
}
|
|
72
|
-
exports.isColumnDataType = isColumnDataType;
|
|
@@ -10,6 +10,7 @@ import { OrderByItemNode } from './order-by-item-node.js';
|
|
|
10
10
|
import { ExplainNode } from './explain-node.js';
|
|
11
11
|
import { UsingNode } from './using-node.js';
|
|
12
12
|
import { TopNode } from './top-node.js';
|
|
13
|
+
import { OutputNode } from './output-node.js';
|
|
13
14
|
export interface DeleteQueryNode extends OperationNode {
|
|
14
15
|
readonly kind: 'DeleteQueryNode';
|
|
15
16
|
readonly from: FromNode;
|
|
@@ -21,7 +22,9 @@ export interface DeleteQueryNode extends OperationNode {
|
|
|
21
22
|
readonly orderBy?: OrderByNode;
|
|
22
23
|
readonly limit?: LimitNode;
|
|
23
24
|
readonly explain?: ExplainNode;
|
|
25
|
+
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|
24
26
|
readonly top?: TopNode;
|
|
27
|
+
readonly output?: OutputNode;
|
|
25
28
|
}
|
|
26
29
|
/**
|
|
27
30
|
* @internal
|
|
@@ -19,10 +19,10 @@ export declare const ForeignKeyConstraintNode: Readonly<{
|
|
|
19
19
|
is(node: OperationNode): node is ForeignKeyConstraintNode;
|
|
20
20
|
create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string): ForeignKeyConstraintNode;
|
|
21
21
|
cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
|
|
22
|
-
name?: IdentifierNode
|
|
23
|
-
onDelete?:
|
|
24
|
-
onUpdate?:
|
|
25
|
-
kind:
|
|
22
|
+
name?: IdentifierNode;
|
|
23
|
+
onDelete?: OnModifyForeignAction;
|
|
24
|
+
onUpdate?: OnModifyForeignAction;
|
|
25
|
+
kind: "ForeignKeyConstraintNode";
|
|
26
26
|
columns: ReadonlyArray<ColumnNode>;
|
|
27
27
|
references: ReferencesNode;
|
|
28
28
|
}>;
|
|
@@ -9,5 +9,5 @@ export interface HavingNode extends OperationNode {
|
|
|
9
9
|
export declare const HavingNode: Readonly<{
|
|
10
10
|
is(node: OperationNode): node is HavingNode;
|
|
11
11
|
create(filter: OperationNode): HavingNode;
|
|
12
|
-
cloneWithOperation(havingNode: HavingNode, operator:
|
|
12
|
+
cloneWithOperation(havingNode: HavingNode, operator: "And" | "Or", operation: OperationNode): HavingNode;
|
|
13
13
|
}>;
|
|
@@ -3,6 +3,7 @@ import { ExplainNode } from './explain-node.js';
|
|
|
3
3
|
import { OnConflictNode } from './on-conflict-node.js';
|
|
4
4
|
import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
|
|
5
5
|
import { OperationNode } from './operation-node.js';
|
|
6
|
+
import { OutputNode } from './output-node.js';
|
|
6
7
|
import { ReturningNode } from './returning-node.js';
|
|
7
8
|
import { TableNode } from './table-node.js';
|
|
8
9
|
import { TopNode } from './top-node.js';
|
|
@@ -21,7 +22,9 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
21
22
|
readonly replace?: boolean;
|
|
22
23
|
readonly explain?: ExplainNode;
|
|
23
24
|
readonly defaultValues?: boolean;
|
|
25
|
+
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|
24
26
|
readonly top?: TopNode;
|
|
27
|
+
readonly output?: OutputNode;
|
|
25
28
|
}
|
|
26
29
|
/**
|
|
27
30
|
* @internal
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AliasNode } from './alias-node.js';
|
|
2
2
|
import { JoinNode } from './join-node.js';
|
|
3
3
|
import { OperationNode } from './operation-node.js';
|
|
4
|
+
import { OutputNode } from './output-node.js';
|
|
4
5
|
import { TableNode } from './table-node.js';
|
|
5
6
|
import { TopNode } from './top-node.js';
|
|
6
7
|
import { WhenNode } from './when-node.js';
|
|
@@ -12,6 +13,8 @@ export interface MergeQueryNode extends OperationNode {
|
|
|
12
13
|
readonly whens?: ReadonlyArray<WhenNode>;
|
|
13
14
|
readonly with?: WithNode;
|
|
14
15
|
readonly top?: TopNode;
|
|
16
|
+
readonly output?: OutputNode;
|
|
17
|
+
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* @internal
|
|
@@ -9,5 +9,5 @@ export interface OnNode extends OperationNode {
|
|
|
9
9
|
export declare const OnNode: Readonly<{
|
|
10
10
|
is(node: OperationNode): node is OnNode;
|
|
11
11
|
create(filter: OperationNode): OnNode;
|
|
12
|
-
cloneWithOperation(onNode: OnNode, operator:
|
|
12
|
+
cloneWithOperation(onNode: OnNode, operator: "And" | "Or", operation: OperationNode): OnNode;
|
|
13
13
|
}>;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isOperationNodeSource =
|
|
3
|
+
exports.isOperationNodeSource = isOperationNodeSource;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
5
|
function isOperationNodeSource(obj) {
|
|
6
6
|
return (0, object_utils_js_1.isObject)(obj) && (0, object_utils_js_1.isFunction)(obj.toOperationNode);
|
|
7
7
|
}
|
|
8
|
-
exports.isOperationNodeSource = isOperationNodeSource;
|
|
@@ -91,6 +91,7 @@ import { AddIndexNode } from './add-index-node.js';
|
|
|
91
91
|
import { CastNode } from './cast-node.js';
|
|
92
92
|
import { FetchNode } from './fetch-node.js';
|
|
93
93
|
import { TopNode } from './top-node.js';
|
|
94
|
+
import { OutputNode } from './output-node.js';
|
|
94
95
|
/**
|
|
95
96
|
* Transforms an operation node tree into another one.
|
|
96
97
|
*
|
|
@@ -105,9 +106,12 @@ import { TopNode } from './top-node.js';
|
|
|
105
106
|
* snake_case, you'd do something like this:
|
|
106
107
|
*
|
|
107
108
|
* ```ts
|
|
109
|
+
* import { type IdentifierNode, OperationNodeTransformer } from 'kysely'
|
|
110
|
+
* import snakeCase from 'lodash/snakeCase'
|
|
111
|
+
*
|
|
108
112
|
* class CamelCaseTransformer extends OperationNodeTransformer {
|
|
109
|
-
* transformIdentifier(node: IdentifierNode): IdentifierNode {
|
|
110
|
-
* node = super.transformIdentifier(node)
|
|
113
|
+
* override transformIdentifier(node: IdentifierNode): IdentifierNode {
|
|
114
|
+
* node = super.transformIdentifier(node)
|
|
111
115
|
*
|
|
112
116
|
* return {
|
|
113
117
|
* ...node,
|
|
@@ -117,7 +121,10 @@ import { TopNode } from './top-node.js';
|
|
|
117
121
|
* }
|
|
118
122
|
*
|
|
119
123
|
* const transformer = new CamelCaseTransformer()
|
|
120
|
-
*
|
|
124
|
+
*
|
|
125
|
+
* const query = db.selectFrom('person').select(['first_name', 'last_name'])
|
|
126
|
+
*
|
|
127
|
+
* const tree = transformer.transformNode(query.toOperationNode())
|
|
121
128
|
* ```
|
|
122
129
|
*/
|
|
123
130
|
export declare class OperationNodeTransformer {
|
|
@@ -211,6 +218,7 @@ export declare class OperationNodeTransformer {
|
|
|
211
218
|
protected transformCast(node: CastNode): CastNode;
|
|
212
219
|
protected transformFetch(node: FetchNode): FetchNode;
|
|
213
220
|
protected transformTop(node: TopNode): TopNode;
|
|
221
|
+
protected transformOutput(node: OutputNode): OutputNode;
|
|
214
222
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
215
223
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
216
224
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|
@@ -17,9 +17,12 @@ const require_all_props_js_1 = require("../util/require-all-props.js");
|
|
|
17
17
|
* snake_case, you'd do something like this:
|
|
18
18
|
*
|
|
19
19
|
* ```ts
|
|
20
|
+
* import { type IdentifierNode, OperationNodeTransformer } from 'kysely'
|
|
21
|
+
* import snakeCase from 'lodash/snakeCase'
|
|
22
|
+
*
|
|
20
23
|
* class CamelCaseTransformer extends OperationNodeTransformer {
|
|
21
|
-
* transformIdentifier(node: IdentifierNode): IdentifierNode {
|
|
22
|
-
* node = super.transformIdentifier(node)
|
|
24
|
+
* override transformIdentifier(node: IdentifierNode): IdentifierNode {
|
|
25
|
+
* node = super.transformIdentifier(node)
|
|
23
26
|
*
|
|
24
27
|
* return {
|
|
25
28
|
* ...node,
|
|
@@ -29,7 +32,10 @@ const require_all_props_js_1 = require("../util/require-all-props.js");
|
|
|
29
32
|
* }
|
|
30
33
|
*
|
|
31
34
|
* const transformer = new CamelCaseTransformer()
|
|
32
|
-
*
|
|
35
|
+
*
|
|
36
|
+
* const query = db.selectFrom('person').select(['first_name', 'last_name'])
|
|
37
|
+
*
|
|
38
|
+
* const tree = transformer.transformNode(query.toOperationNode())
|
|
33
39
|
* ```
|
|
34
40
|
*/
|
|
35
41
|
class OperationNodeTransformer {
|
|
@@ -127,6 +133,7 @@ class OperationNodeTransformer {
|
|
|
127
133
|
CastNode: this.transformCast.bind(this),
|
|
128
134
|
FetchNode: this.transformFetch.bind(this),
|
|
129
135
|
TopNode: this.transformTop.bind(this),
|
|
136
|
+
OutputNode: this.transformOutput.bind(this),
|
|
130
137
|
});
|
|
131
138
|
transformNode(node) {
|
|
132
139
|
if (!node) {
|
|
@@ -262,12 +269,14 @@ class OperationNodeTransformer {
|
|
|
262
269
|
returning: this.transformNode(node.returning),
|
|
263
270
|
onConflict: this.transformNode(node.onConflict),
|
|
264
271
|
onDuplicateKey: this.transformNode(node.onDuplicateKey),
|
|
272
|
+
endModifiers: this.transformNodeList(node.endModifiers),
|
|
265
273
|
with: this.transformNode(node.with),
|
|
266
274
|
ignore: node.ignore,
|
|
267
275
|
replace: node.replace,
|
|
268
276
|
explain: this.transformNode(node.explain),
|
|
269
277
|
defaultValues: node.defaultValues,
|
|
270
278
|
top: this.transformNode(node.top),
|
|
279
|
+
output: this.transformNode(node.output),
|
|
271
280
|
});
|
|
272
281
|
}
|
|
273
282
|
transformValues(node) {
|
|
@@ -284,11 +293,13 @@ class OperationNodeTransformer {
|
|
|
284
293
|
joins: this.transformNodeList(node.joins),
|
|
285
294
|
where: this.transformNode(node.where),
|
|
286
295
|
returning: this.transformNode(node.returning),
|
|
296
|
+
endModifiers: this.transformNodeList(node.endModifiers),
|
|
287
297
|
with: this.transformNode(node.with),
|
|
288
298
|
orderBy: this.transformNode(node.orderBy),
|
|
289
299
|
limit: this.transformNode(node.limit),
|
|
290
300
|
explain: this.transformNode(node.explain),
|
|
291
301
|
top: this.transformNode(node.top),
|
|
302
|
+
output: this.transformNode(node.output),
|
|
292
303
|
});
|
|
293
304
|
}
|
|
294
305
|
transformReturning(node) {
|
|
@@ -329,6 +340,7 @@ class OperationNodeTransformer {
|
|
|
329
340
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|
330
341
|
nullsNotDistinct: node.nullsNotDistinct,
|
|
331
342
|
identity: node.identity,
|
|
343
|
+
ifNotExists: node.ifNotExists,
|
|
332
344
|
});
|
|
333
345
|
}
|
|
334
346
|
transformAddColumn(node) {
|
|
@@ -379,10 +391,12 @@ class OperationNodeTransformer {
|
|
|
379
391
|
where: this.transformNode(node.where),
|
|
380
392
|
updates: this.transformNodeList(node.updates),
|
|
381
393
|
returning: this.transformNode(node.returning),
|
|
394
|
+
endModifiers: this.transformNodeList(node.endModifiers),
|
|
382
395
|
with: this.transformNode(node.with),
|
|
383
396
|
explain: this.transformNode(node.explain),
|
|
384
397
|
limit: this.transformNode(node.limit),
|
|
385
398
|
top: this.transformNode(node.top),
|
|
399
|
+
output: this.transformNode(node.output),
|
|
386
400
|
});
|
|
387
401
|
}
|
|
388
402
|
transformColumnUpdate(node) {
|
|
@@ -684,6 +698,7 @@ class OperationNodeTransformer {
|
|
|
684
698
|
kind: 'AggregateFunctionNode',
|
|
685
699
|
aggregated: this.transformNodeList(node.aggregated),
|
|
686
700
|
distinct: node.distinct,
|
|
701
|
+
orderBy: this.transformNode(node.orderBy),
|
|
687
702
|
filter: this.transformNode(node.filter),
|
|
688
703
|
func: node.func,
|
|
689
704
|
over: this.transformNode(node.over),
|
|
@@ -794,6 +809,8 @@ class OperationNodeTransformer {
|
|
|
794
809
|
whens: this.transformNodeList(node.whens),
|
|
795
810
|
with: this.transformNode(node.with),
|
|
796
811
|
top: this.transformNode(node.top),
|
|
812
|
+
endModifiers: this.transformNodeList(node.endModifiers),
|
|
813
|
+
output: this.transformNode(node.output),
|
|
797
814
|
});
|
|
798
815
|
}
|
|
799
816
|
transformMatched(node) {
|
|
@@ -834,6 +851,12 @@ class OperationNodeTransformer {
|
|
|
834
851
|
modifiers: node.modifiers,
|
|
835
852
|
});
|
|
836
853
|
}
|
|
854
|
+
transformOutput(node) {
|
|
855
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
856
|
+
kind: 'OutputNode',
|
|
857
|
+
selections: this.transformNodeList(node.selections),
|
|
858
|
+
});
|
|
859
|
+
}
|
|
837
860
|
transformDataType(node) {
|
|
838
861
|
// An Object.freezed leaf node. No need to clone.
|
|
839
862
|
return node;
|
|
@@ -91,6 +91,7 @@ import { AddIndexNode } from './add-index-node.js';
|
|
|
91
91
|
import { CastNode } from './cast-node.js';
|
|
92
92
|
import { FetchNode } from './fetch-node.js';
|
|
93
93
|
import { TopNode } from './top-node.js';
|
|
94
|
+
import { OutputNode } from './output-node.js';
|
|
94
95
|
export declare abstract class OperationNodeVisitor {
|
|
95
96
|
#private;
|
|
96
97
|
protected readonly nodeStack: OperationNode[];
|
|
@@ -188,4 +189,5 @@ export declare abstract class OperationNodeVisitor {
|
|
|
188
189
|
protected abstract visitCast(node: CastNode): void;
|
|
189
190
|
protected abstract visitFetch(node: FetchNode): void;
|
|
190
191
|
protected abstract visitTop(node: TopNode): void;
|
|
192
|
+
protected abstract visitOutput(node: OutputNode): void;
|
|
191
193
|
}
|
|
@@ -100,6 +100,7 @@ class OperationNodeVisitor {
|
|
|
100
100
|
CastNode: this.visitCast.bind(this),
|
|
101
101
|
FetchNode: this.visitFetch.bind(this),
|
|
102
102
|
TopNode: this.visitTop.bind(this),
|
|
103
|
+
OutputNode: this.visitOutput.bind(this),
|
|
103
104
|
});
|
|
104
105
|
visitNode = (node) => {
|
|
105
106
|
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' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode';
|
|
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' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode' | 'OutputNode';
|
|
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", "is distinct from", "is not distinct from"];
|
|
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", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|
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", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "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];
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.OperatorNode = exports.OPERATORS = exports.UNARY_OPERATORS = exports.UNARY_FILTER_OPERATORS = exports.BINARY_OPERATORS = exports.JSON_OPERATORS = exports.ARITHMETIC_OPERATORS = exports.COMPARISON_OPERATORS = void 0;
|
|
4
|
+
exports.isOperator = isOperator;
|
|
5
|
+
exports.isBinaryOperator = isBinaryOperator;
|
|
6
|
+
exports.isComparisonOperator = isComparisonOperator;
|
|
7
|
+
exports.isArithmeticOperator = isArithmeticOperator;
|
|
8
|
+
exports.isJSONOperator = isJSONOperator;
|
|
4
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
10
|
exports.COMPARISON_OPERATORS = [
|
|
6
11
|
'=',
|
|
@@ -22,9 +27,11 @@ exports.COMPARISON_OPERATORS = [
|
|
|
22
27
|
'not ilike',
|
|
23
28
|
'@>',
|
|
24
29
|
'<@',
|
|
30
|
+
'^@',
|
|
25
31
|
'&&',
|
|
26
32
|
'?',
|
|
27
33
|
'?&',
|
|
34
|
+
'?|',
|
|
28
35
|
'!<',
|
|
29
36
|
'!>',
|
|
30
37
|
'<=>',
|
|
@@ -86,20 +93,15 @@ exports.OperatorNode = (0, object_utils_js_1.freeze)({
|
|
|
86
93
|
function isOperator(op) {
|
|
87
94
|
return (0, object_utils_js_1.isString)(op) && exports.OPERATORS.includes(op);
|
|
88
95
|
}
|
|
89
|
-
exports.isOperator = isOperator;
|
|
90
96
|
function isBinaryOperator(op) {
|
|
91
97
|
return (0, object_utils_js_1.isString)(op) && exports.BINARY_OPERATORS.includes(op);
|
|
92
98
|
}
|
|
93
|
-
exports.isBinaryOperator = isBinaryOperator;
|
|
94
99
|
function isComparisonOperator(op) {
|
|
95
100
|
return (0, object_utils_js_1.isString)(op) && exports.COMPARISON_OPERATORS.includes(op);
|
|
96
101
|
}
|
|
97
|
-
exports.isComparisonOperator = isComparisonOperator;
|
|
98
102
|
function isArithmeticOperator(op) {
|
|
99
103
|
return (0, object_utils_js_1.isString)(op) && exports.ARITHMETIC_OPERATORS.includes(op);
|
|
100
104
|
}
|
|
101
|
-
exports.isArithmeticOperator = isArithmeticOperator;
|
|
102
105
|
function isJSONOperator(op) {
|
|
103
106
|
return (0, object_utils_js_1.isString)(op) && exports.JSON_OPERATORS.includes(op);
|
|
104
107
|
}
|
|
105
|
-
exports.isJSONOperator = isJSONOperator;
|