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
|
@@ -72,7 +72,7 @@ class QueryCreator {
|
|
|
72
72
|
* last_name: 'Aniston'
|
|
73
73
|
* })
|
|
74
74
|
* .returning('id')
|
|
75
|
-
* .
|
|
75
|
+
* .executeTakeFirstOrThrow()
|
|
76
76
|
* ```
|
|
77
77
|
*/
|
|
78
78
|
insertInto(table) {
|
|
@@ -141,24 +141,77 @@ class QueryCreator {
|
|
|
141
141
|
*
|
|
142
142
|
* ### Examples
|
|
143
143
|
*
|
|
144
|
+
* <!-- siteExample("cte", "Simple selects", 10) -->
|
|
145
|
+
*
|
|
146
|
+
* Common table expressions (CTE) are a great way to modularize complex queries.
|
|
147
|
+
* Essentially they allow you to run multiple separate queries within a
|
|
148
|
+
* single roundtrip to the DB.
|
|
149
|
+
*
|
|
150
|
+
* Since CTEs are a part of the main query, query optimizers inside DB
|
|
151
|
+
* engines are able to optimize the overall query. For example, postgres
|
|
152
|
+
* is able to inline the CTEs inside the using queries if it decides it's
|
|
153
|
+
* faster.
|
|
154
|
+
*
|
|
144
155
|
* ```ts
|
|
145
|
-
* await db
|
|
156
|
+
* const result = await db
|
|
157
|
+
* // Create a CTE called `jennifers` that selects all
|
|
158
|
+
* // persons named 'Jennifer'.
|
|
146
159
|
* .with('jennifers', (db) => db
|
|
147
160
|
* .selectFrom('person')
|
|
148
161
|
* .where('first_name', '=', 'Jennifer')
|
|
149
162
|
* .select(['id', 'age'])
|
|
150
163
|
* )
|
|
164
|
+
* // Select all rows from the `jennifers` CTE and
|
|
165
|
+
* // further filter it.
|
|
151
166
|
* .with('adult_jennifers', (db) => db
|
|
152
167
|
* .selectFrom('jennifers')
|
|
153
168
|
* .where('age', '>', 18)
|
|
154
169
|
* .select(['id', 'age'])
|
|
155
170
|
* )
|
|
171
|
+
* // Finally select all adult jennifers that are
|
|
172
|
+
* // also younger than 60.
|
|
156
173
|
* .selectFrom('adult_jennifers')
|
|
157
174
|
* .where('age', '<', 60)
|
|
158
175
|
* .selectAll()
|
|
159
176
|
* .execute()
|
|
160
177
|
* ```
|
|
161
178
|
*
|
|
179
|
+
* <!-- siteExample("cte", "Inserts, updates and deletions", 20) -->
|
|
180
|
+
*
|
|
181
|
+
* Some databases like postgres also allow you to run other queries than selects
|
|
182
|
+
* in CTEs. On these databases CTEs are extremely powerful:
|
|
183
|
+
*
|
|
184
|
+
* ```ts
|
|
185
|
+
* const result = await db
|
|
186
|
+
* .with('new_person', (db) => db
|
|
187
|
+
* .insertInto('person')
|
|
188
|
+
* .values({
|
|
189
|
+
* first_name: 'Jennifer',
|
|
190
|
+
* age: 35,
|
|
191
|
+
* })
|
|
192
|
+
* .returning('id')
|
|
193
|
+
* )
|
|
194
|
+
* .with('new_pet', (db) => db
|
|
195
|
+
* .insertInto('pet')
|
|
196
|
+
* .values({
|
|
197
|
+
* name: 'Doggo',
|
|
198
|
+
* species: 'dog',
|
|
199
|
+
* is_favorite: true,
|
|
200
|
+
* // Use the id of the person we just inserted.
|
|
201
|
+
* owner_id: db
|
|
202
|
+
* .selectFrom('new_person')
|
|
203
|
+
* .select('id')
|
|
204
|
+
* })
|
|
205
|
+
* .returning('id')
|
|
206
|
+
* )
|
|
207
|
+
* .selectFrom(['new_person', 'new_pet'])
|
|
208
|
+
* .select([
|
|
209
|
+
* 'new_person.id as person_id',
|
|
210
|
+
* 'new_pet.id as pet_id'
|
|
211
|
+
* ])
|
|
212
|
+
* .execute()
|
|
213
|
+
* ```
|
|
214
|
+
*
|
|
162
215
|
* The CTE name can optionally specify column names in addition to
|
|
163
216
|
* a name. In that case Kysely requires the expression to retun
|
|
164
217
|
* rows with the same columns.
|
|
@@ -247,7 +300,7 @@ class QueryCreator {
|
|
|
247
300
|
* This only affects the query created through the builder returned from
|
|
248
301
|
* this method and doesn't modify the `db` instance.
|
|
249
302
|
*
|
|
250
|
-
* See [this recipe](https://github.com/
|
|
303
|
+
* See [this recipe](https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0007-schemas.md)
|
|
251
304
|
* for a more detailed explanation.
|
|
252
305
|
*
|
|
253
306
|
* ### Examples
|
|
@@ -20,6 +20,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
20
20
|
* this method also provides strict typing:
|
|
21
21
|
*
|
|
22
22
|
* ```ts
|
|
23
|
+
* import { sql } from 'kysely'
|
|
24
|
+
*
|
|
23
25
|
* const result = await db
|
|
24
26
|
* .selectFrom('person')
|
|
25
27
|
* .select(
|
|
@@ -33,7 +35,7 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
33
35
|
*
|
|
34
36
|
* The generated SQL (PostgreSQL):
|
|
35
37
|
*
|
|
36
|
-
* ```
|
|
38
|
+
* ```sql
|
|
37
39
|
* select concat(first_name, ' ', last_name) as "full_name"
|
|
38
40
|
* from "person"
|
|
39
41
|
* ```
|
|
@@ -42,6 +44,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
42
44
|
* provide the alias as the only type argument:
|
|
43
45
|
*
|
|
44
46
|
* ```ts
|
|
47
|
+
* import { sql } from 'kysely'
|
|
48
|
+
*
|
|
45
49
|
* const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
|
|
46
50
|
*
|
|
47
51
|
* // The alias is `t(a, b)` which specifies the column names
|
|
@@ -56,11 +60,12 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
56
60
|
* .expression(
|
|
57
61
|
* db.selectFrom(aliasedValues).select(['t.a', 't.b'])
|
|
58
62
|
* )
|
|
63
|
+
* .execute()
|
|
59
64
|
* ```
|
|
60
65
|
*
|
|
61
66
|
* The generated SQL (PostgreSQL):
|
|
62
67
|
*
|
|
63
|
-
* ```
|
|
68
|
+
* ```sql
|
|
64
69
|
* insert into "person" ("first_name", "last_name")
|
|
65
70
|
* from (values (1, 'foo')) as t(a, b)
|
|
66
71
|
* select "t"."a", "t"."b"
|
|
@@ -70,6 +75,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
70
75
|
/**
|
|
71
76
|
* Returns an aliased version of the expression.
|
|
72
77
|
*
|
|
78
|
+
* ### Examples
|
|
79
|
+
*
|
|
73
80
|
* In addition to slapping `as "the_alias"` at the end of the expression,
|
|
74
81
|
* this method also provides strict typing:
|
|
75
82
|
*
|
|
@@ -78,7 +85,7 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
78
85
|
* .selectFrom('person')
|
|
79
86
|
* .select((eb) =>
|
|
80
87
|
* // `eb.fn<string>` returns an AliasableExpression<string>
|
|
81
|
-
* eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
|
|
88
|
+
* eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
|
|
82
89
|
* )
|
|
83
90
|
* .executeTakeFirstOrThrow()
|
|
84
91
|
*
|
|
@@ -88,7 +95,7 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
88
95
|
*
|
|
89
96
|
* The generated SQL (PostgreSQL):
|
|
90
97
|
*
|
|
91
|
-
* ```
|
|
98
|
+
* ```sql
|
|
92
99
|
* select
|
|
93
100
|
* concat("first_name", $1, "last_name") as "full_name"
|
|
94
101
|
* from
|
|
@@ -99,6 +106,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
99
106
|
* provide the alias as the only type argument:
|
|
100
107
|
*
|
|
101
108
|
* ```ts
|
|
109
|
+
* import { sql } from 'kysely'
|
|
110
|
+
*
|
|
102
111
|
* const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
|
|
103
112
|
*
|
|
104
113
|
* // The alias is `t(a, b)` which specifies the column names
|
|
@@ -113,11 +122,12 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
113
122
|
* .expression(
|
|
114
123
|
* db.selectFrom(aliasedValues).select(['t.a', 't.b'])
|
|
115
124
|
* )
|
|
125
|
+
* .execute()
|
|
116
126
|
* ```
|
|
117
127
|
*
|
|
118
128
|
* The generated SQL (PostgreSQL):
|
|
119
129
|
*
|
|
120
|
-
* ```
|
|
130
|
+
* ```sql
|
|
121
131
|
* insert into "person" ("first_name", "last_name")
|
|
122
132
|
* from (values (1, 'foo')) as t(a, b)
|
|
123
133
|
* select "t"."a", "t"."b"
|
|
@@ -151,8 +161,10 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
151
161
|
* ### Examples
|
|
152
162
|
*
|
|
153
163
|
* ```ts
|
|
154
|
-
*
|
|
155
|
-
*
|
|
164
|
+
* import { sql } from 'kysely'
|
|
165
|
+
*
|
|
166
|
+
* const compiledQuery = sql`select * from ${sql.table('person')}`.compile(db)
|
|
167
|
+
* console.log(compiledQuery.sql)
|
|
156
168
|
* ```
|
|
157
169
|
*/
|
|
158
170
|
compile(executorProvider: QueryExecutorProvider): CompiledQuery<O>;
|
|
@@ -162,6 +174,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
162
174
|
* ### Examples
|
|
163
175
|
*
|
|
164
176
|
* ```ts
|
|
177
|
+
* import { sql } from 'kysely'
|
|
178
|
+
*
|
|
165
179
|
* const result = await sql`select * from ${sql.table('person')}`.execute(db)
|
|
166
180
|
* ```
|
|
167
181
|
*/
|
|
@@ -169,11 +183,19 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
|
169
183
|
/**
|
|
170
184
|
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
171
185
|
*
|
|
186
|
+
* ### Examples
|
|
187
|
+
*
|
|
172
188
|
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
173
189
|
* template tag to build the node:
|
|
174
190
|
*
|
|
175
191
|
* ```ts
|
|
192
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
193
|
+
*
|
|
176
194
|
* class SomeExpression<T> implements Expression<T> {
|
|
195
|
+
* get expressionType(): T | undefined {
|
|
196
|
+
* return undefined
|
|
197
|
+
* }
|
|
198
|
+
*
|
|
177
199
|
* toOperationNode(): OperationNode {
|
|
178
200
|
* return sql`some sql here`.toOperationNode()
|
|
179
201
|
* }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createRawBuilder =
|
|
3
|
+
exports.createRawBuilder = createRawBuilder;
|
|
4
4
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
5
5
|
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
6
6
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
@@ -63,7 +63,6 @@ class RawBuilderImpl {
|
|
|
63
63
|
function createRawBuilder(props) {
|
|
64
64
|
return new RawBuilderImpl(props);
|
|
65
65
|
}
|
|
66
|
-
exports.createRawBuilder = createRawBuilder;
|
|
67
66
|
(0, prevent_await_js_1.preventAwait)(RawBuilderImpl, "don't await RawBuilder instances directly. To execute the query you need to call `execute`");
|
|
68
67
|
class AliasedRawBuilderImpl {
|
|
69
68
|
#rawBuilder;
|
|
@@ -5,6 +5,7 @@ export interface Sql {
|
|
|
5
5
|
*
|
|
6
6
|
* ```ts
|
|
7
7
|
* import { sql } from 'kysely'
|
|
8
|
+
* import type { Person } from 'type-editor' // imaginary module
|
|
8
9
|
*
|
|
9
10
|
* const id = 123
|
|
10
11
|
* const snippet = sql<Person[]>`select * from person where id = ${id}`
|
|
@@ -26,6 +27,12 @@ export interface Sql {
|
|
|
26
27
|
* of methods:
|
|
27
28
|
*
|
|
28
29
|
* ```ts
|
|
30
|
+
* import { sql } from 'kysely'
|
|
31
|
+
*
|
|
32
|
+
* const nicknames = ['johnny', 'john', 'jon']
|
|
33
|
+
* const date1 = new Date('2000-01-01')
|
|
34
|
+
* const date2 = new Date('2001-01-01')
|
|
35
|
+
*
|
|
29
36
|
* const persons = await db
|
|
30
37
|
* .selectFrom('person')
|
|
31
38
|
* .select(
|
|
@@ -33,12 +40,12 @@ export interface Sql {
|
|
|
33
40
|
* // method to give it an alias.
|
|
34
41
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
|
|
35
42
|
* )
|
|
36
|
-
* .where(sql
|
|
43
|
+
* .where(sql<boolean>`birthdate between ${date1} and ${date2}`)
|
|
37
44
|
* // Here we assume we have list of nicknames for the person
|
|
38
45
|
* // (a list of strings) and we use the PostgreSQL `@>` operator
|
|
39
46
|
* // to test if all of them are valid nicknames for the user.
|
|
40
|
-
* .where('nicknames', '@>', sql
|
|
41
|
-
* .orderBy(sql
|
|
47
|
+
* .where('nicknames', '@>', sql<string[]>`ARRAY[${sql.join(nicknames)}]`)
|
|
48
|
+
* .orderBy(sql<string>`concat(first_name, ' ', last_name)`)
|
|
42
49
|
* .execute()
|
|
43
50
|
* ```
|
|
44
51
|
*
|
|
@@ -56,19 +63,24 @@ export interface Sql {
|
|
|
56
63
|
* instance as the only argument:
|
|
57
64
|
*
|
|
58
65
|
* ```ts
|
|
59
|
-
*
|
|
66
|
+
* import { sql } from 'kysely'
|
|
67
|
+
* import type { Person } from 'type-editor'
|
|
68
|
+
*
|
|
69
|
+
* const { rows: results } = await sql<Person[]>`select * from person`.execute(db)
|
|
60
70
|
* ```
|
|
61
71
|
*
|
|
62
72
|
* You can merge other `sql` expressions and queries using substitutions:
|
|
63
73
|
*
|
|
64
74
|
* ```ts
|
|
75
|
+
* import { sql } from 'kysely'
|
|
76
|
+
*
|
|
65
77
|
* const petName = db.selectFrom('pet').select('name').limit(1)
|
|
66
|
-
* const fullName = sql
|
|
78
|
+
* const fullName = sql<string>`concat(first_name, ' ', last_name)`
|
|
67
79
|
*
|
|
68
|
-
* sql
|
|
80
|
+
* sql<{ full_name: string; pet_name: string }[]>`
|
|
69
81
|
* select ${fullName} as full_name, ${petName} as pet_name
|
|
70
82
|
* from person
|
|
71
|
-
*
|
|
83
|
+
* `.execute(db)
|
|
72
84
|
* ```
|
|
73
85
|
*
|
|
74
86
|
* Substitutions also handle {@link ExpressionBuilder.ref},
|
|
@@ -101,6 +113,11 @@ export interface Sql {
|
|
|
101
113
|
* `sql.val(value)` is a shortcut for:
|
|
102
114
|
*
|
|
103
115
|
* ```ts
|
|
116
|
+
* import { sql } from 'kysely'
|
|
117
|
+
*
|
|
118
|
+
* const value = 123
|
|
119
|
+
* type ValueType = typeof value
|
|
120
|
+
*
|
|
104
121
|
* sql<ValueType>`${value}`
|
|
105
122
|
* ```
|
|
106
123
|
*/
|
|
@@ -131,7 +148,7 @@ export interface Sql {
|
|
|
131
148
|
* select "first_name" from person
|
|
132
149
|
* ```
|
|
133
150
|
*
|
|
134
|
-
* The
|
|
151
|
+
* The references can also include a table name:
|
|
135
152
|
*
|
|
136
153
|
* ```ts
|
|
137
154
|
* const columnRef = 'person.first_name'
|
|
@@ -145,7 +162,7 @@ export interface Sql {
|
|
|
145
162
|
* select "person"."first_name" from person
|
|
146
163
|
* ```
|
|
147
164
|
*
|
|
148
|
-
* The
|
|
165
|
+
* The references can also include a schema on supported databases:
|
|
149
166
|
*
|
|
150
167
|
* ```ts
|
|
151
168
|
* const columnRef = 'public.person.first_name'
|
|
@@ -204,7 +221,7 @@ export interface Sql {
|
|
|
204
221
|
* but can also be used for any other identifiers like index names.
|
|
205
222
|
*
|
|
206
223
|
* You should use {@link Sql.ref | ref} and {@link Sql.table | table}
|
|
207
|
-
* instead of this whenever possible as they produce a more
|
|
224
|
+
* instead of this whenever possible as they produce a more semantic
|
|
208
225
|
* operation node tree.
|
|
209
226
|
*
|
|
210
227
|
* WARNING! Using this with unchecked inputs WILL lead to SQL injection
|
|
@@ -229,7 +246,7 @@ export interface Sql {
|
|
|
229
246
|
* const columnName = 'first_name'
|
|
230
247
|
* const table = 'person'
|
|
231
248
|
*
|
|
232
|
-
* sql`select ${sql.id(schema, table, columnName)}
|
|
249
|
+
* sql`select ${sql.id(schema, table, columnName)} from ${sql.id(schema, table)}`
|
|
233
250
|
* ```
|
|
234
251
|
*
|
|
235
252
|
* The generated SQL (PostgreSQL):
|
|
@@ -297,11 +314,13 @@ export interface Sql {
|
|
|
297
314
|
* ### Examples
|
|
298
315
|
*
|
|
299
316
|
* ```ts
|
|
317
|
+
* import type { Person } from 'type-editor' // imaginary module
|
|
318
|
+
*
|
|
300
319
|
* function findByNicknames(nicknames: string[]): Promise<Person[]> {
|
|
301
320
|
* return db
|
|
302
321
|
* .selectFrom('person')
|
|
303
322
|
* .selectAll()
|
|
304
|
-
* .where('nicknames', '@>', sql
|
|
323
|
+
* .where('nicknames', '@>', sql<string[]>`ARRAY[${sql.join(nicknames)}]`)
|
|
305
324
|
* .execute()
|
|
306
325
|
* }
|
|
307
326
|
* ```
|
|
@@ -19,14 +19,28 @@ export declare class AlterColumnBuilder {
|
|
|
19
19
|
/**
|
|
20
20
|
* Allows us to force consumers to do exactly one alteration to a column.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
22
|
+
* One cannot do no alterations:
|
|
23
23
|
*
|
|
24
24
|
* ```ts
|
|
25
|
-
* db.schema
|
|
25
|
+
* await db.schema
|
|
26
|
+
* .alterTable('person')
|
|
27
|
+
* // .execute() // Property 'execute' does not exist on type 'AlteredColumnBuilder'.
|
|
26
28
|
* ```
|
|
27
29
|
*
|
|
28
30
|
* ```ts
|
|
29
|
-
* db.schema
|
|
31
|
+
* await db.schema
|
|
32
|
+
* .alterTable('person')
|
|
33
|
+
* // .alterColumn('age', (ac) => ac) // Type 'AlterColumnBuilder' is not assignable to type 'AlteredColumnBuilder'.
|
|
34
|
+
* // .execute()
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* One cannot do multiple alterations:
|
|
38
|
+
*
|
|
39
|
+
* ```ts
|
|
40
|
+
* await db.schema
|
|
41
|
+
* .alterTable('person')
|
|
42
|
+
* // .alterColumn('age', (ac) => ac.dropNotNull().setNotNull()) // Property 'setNotNull' does not exist on type 'AlteredColumnBuilder'.
|
|
43
|
+
* // .execute()
|
|
30
44
|
* ```
|
|
31
45
|
*
|
|
32
46
|
* Which would now throw a compilation error, instead of a runtime error.
|
|
@@ -4,6 +4,7 @@ exports.AlteredColumnBuilder = exports.AlterColumnBuilder = void 0;
|
|
|
4
4
|
const alter_column_node_js_1 = require("../operation-node/alter-column-node.js");
|
|
5
5
|
const data_type_parser_js_1 = require("../parser/data-type-parser.js");
|
|
6
6
|
const default_value_parser_js_1 = require("../parser/default-value-parser.js");
|
|
7
|
+
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
7
8
|
class AlterColumnBuilder {
|
|
8
9
|
#column;
|
|
9
10
|
constructor(column) {
|
|
@@ -33,17 +34,32 @@ class AlterColumnBuilder {
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
exports.AlterColumnBuilder = AlterColumnBuilder;
|
|
37
|
+
(0, prevent_await_js_1.preventAwait)(AlterColumnBuilder, "don't await AlterColumnBuilder instances");
|
|
36
38
|
/**
|
|
37
39
|
* Allows us to force consumers to do exactly one alteration to a column.
|
|
38
40
|
*
|
|
39
|
-
*
|
|
41
|
+
* One cannot do no alterations:
|
|
40
42
|
*
|
|
41
43
|
* ```ts
|
|
42
|
-
* db.schema
|
|
44
|
+
* await db.schema
|
|
45
|
+
* .alterTable('person')
|
|
46
|
+
* // .execute() // Property 'execute' does not exist on type 'AlteredColumnBuilder'.
|
|
43
47
|
* ```
|
|
44
48
|
*
|
|
45
49
|
* ```ts
|
|
46
|
-
* db.schema
|
|
50
|
+
* await db.schema
|
|
51
|
+
* .alterTable('person')
|
|
52
|
+
* // .alterColumn('age', (ac) => ac) // Type 'AlterColumnBuilder' is not assignable to type 'AlteredColumnBuilder'.
|
|
53
|
+
* // .execute()
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* One cannot do multiple alterations:
|
|
57
|
+
*
|
|
58
|
+
* ```ts
|
|
59
|
+
* await db.schema
|
|
60
|
+
* .alterTable('person')
|
|
61
|
+
* // .alterColumn('age', (ac) => ac.dropNotNull().setNotNull()) // Property 'setNotNull' does not exist on type 'AlteredColumnBuilder'.
|
|
62
|
+
* // .execute()
|
|
47
63
|
* ```
|
|
48
64
|
*
|
|
49
65
|
* Which would now throw a compilation error, instead of a runtime error.
|
|
@@ -58,3 +74,4 @@ class AlteredColumnBuilder {
|
|
|
58
74
|
}
|
|
59
75
|
}
|
|
60
76
|
exports.AlteredColumnBuilder = AlteredColumnBuilder;
|
|
77
|
+
(0, prevent_await_js_1.preventAwait)(AlteredColumnBuilder, "don't await AlteredColumnBuilder instances");
|
|
@@ -12,6 +12,23 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
|
|
|
12
12
|
constructor(props: AlterTableAddIndexBuilderProps);
|
|
13
13
|
/**
|
|
14
14
|
* Makes the index unique.
|
|
15
|
+
*
|
|
16
|
+
* ### Examples
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* await db.schema
|
|
20
|
+
* .alterTable('person')
|
|
21
|
+
* .addIndex('person_first_name_index')
|
|
22
|
+
* .unique()
|
|
23
|
+
* .column('email')
|
|
24
|
+
* .execute()
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* The generated SQL (MySQL):
|
|
28
|
+
*
|
|
29
|
+
* ```sql
|
|
30
|
+
* alter table `person` add unique index `person_first_name_index` (`email`)
|
|
31
|
+
* ```
|
|
15
32
|
*/
|
|
16
33
|
unique(): AlterTableAddIndexBuilder;
|
|
17
34
|
/**
|
|
@@ -24,11 +41,11 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
|
|
|
24
41
|
*
|
|
25
42
|
* ```ts
|
|
26
43
|
* await db.schema
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
44
|
+
* .alterTable('person')
|
|
45
|
+
* .addIndex('person_first_name_and_age_index')
|
|
46
|
+
* .column('first_name')
|
|
47
|
+
* .column('age desc')
|
|
48
|
+
* .execute()
|
|
32
49
|
* ```
|
|
33
50
|
*
|
|
34
51
|
* The generated SQL (MySQL):
|
|
@@ -48,10 +65,10 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
|
|
|
48
65
|
*
|
|
49
66
|
* ```ts
|
|
50
67
|
* await db.schema
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
68
|
+
* .alterTable('person')
|
|
69
|
+
* .addIndex('person_first_name_and_age_index')
|
|
70
|
+
* .columns(['first_name', 'age desc'])
|
|
71
|
+
* .execute()
|
|
55
72
|
* ```
|
|
56
73
|
*
|
|
57
74
|
* The generated SQL (MySQL):
|
|
@@ -72,7 +89,7 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
|
|
|
72
89
|
* await db.schema
|
|
73
90
|
* .alterTable('person')
|
|
74
91
|
* .addIndex('person_first_name_index')
|
|
75
|
-
* .expression(sql
|
|
92
|
+
* .expression(sql<boolean>`(first_name < 'Sami')`)
|
|
76
93
|
* .execute()
|
|
77
94
|
* ```
|
|
78
95
|
*
|
|
@@ -85,6 +102,23 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
|
|
|
85
102
|
expression(expression: Expression<any>): AlterTableAddIndexBuilder;
|
|
86
103
|
/**
|
|
87
104
|
* Specifies the index type.
|
|
105
|
+
*
|
|
106
|
+
* ### Examples
|
|
107
|
+
*
|
|
108
|
+
* ```ts
|
|
109
|
+
* await db.schema
|
|
110
|
+
* .alterTable('person')
|
|
111
|
+
* .addIndex('person_first_name_index')
|
|
112
|
+
* .column('first_name')
|
|
113
|
+
* .using('hash')
|
|
114
|
+
* .execute()
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* The generated SQL (MySQL):
|
|
118
|
+
*
|
|
119
|
+
* ```sql
|
|
120
|
+
* alter table `person` add index `person_first_name_index` (`first_name`) using hash
|
|
121
|
+
* ```
|
|
88
122
|
*/
|
|
89
123
|
using(indexType: IndexType): AlterTableAddIndexBuilder;
|
|
90
124
|
using(indexType: string): AlterTableAddIndexBuilder;
|
|
@@ -14,6 +14,23 @@ class AlterTableAddIndexBuilder {
|
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Makes the index unique.
|
|
17
|
+
*
|
|
18
|
+
* ### Examples
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* await db.schema
|
|
22
|
+
* .alterTable('person')
|
|
23
|
+
* .addIndex('person_first_name_index')
|
|
24
|
+
* .unique()
|
|
25
|
+
* .column('email')
|
|
26
|
+
* .execute()
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* The generated SQL (MySQL):
|
|
30
|
+
*
|
|
31
|
+
* ```sql
|
|
32
|
+
* alter table `person` add unique index `person_first_name_index` (`email`)
|
|
33
|
+
* ```
|
|
17
34
|
*/
|
|
18
35
|
unique() {
|
|
19
36
|
return new AlterTableAddIndexBuilder({
|
|
@@ -35,11 +52,11 @@ class AlterTableAddIndexBuilder {
|
|
|
35
52
|
*
|
|
36
53
|
* ```ts
|
|
37
54
|
* await db.schema
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
55
|
+
* .alterTable('person')
|
|
56
|
+
* .addIndex('person_first_name_and_age_index')
|
|
57
|
+
* .column('first_name')
|
|
58
|
+
* .column('age desc')
|
|
59
|
+
* .execute()
|
|
43
60
|
* ```
|
|
44
61
|
*
|
|
45
62
|
* The generated SQL (MySQL):
|
|
@@ -68,10 +85,10 @@ class AlterTableAddIndexBuilder {
|
|
|
68
85
|
*
|
|
69
86
|
* ```ts
|
|
70
87
|
* await db.schema
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
88
|
+
* .alterTable('person')
|
|
89
|
+
* .addIndex('person_first_name_and_age_index')
|
|
90
|
+
* .columns(['first_name', 'age desc'])
|
|
91
|
+
* .execute()
|
|
75
92
|
* ```
|
|
76
93
|
*
|
|
77
94
|
* The generated SQL (MySQL):
|
|
@@ -99,7 +116,7 @@ class AlterTableAddIndexBuilder {
|
|
|
99
116
|
* await db.schema
|
|
100
117
|
* .alterTable('person')
|
|
101
118
|
* .addIndex('person_first_name_index')
|
|
102
|
-
* .expression(sql
|
|
119
|
+
* .expression(sql<boolean>`(first_name < 'Sami')`)
|
|
103
120
|
* .execute()
|
|
104
121
|
* ```
|
|
105
122
|
*
|
|
@@ -203,6 +203,7 @@ class AlterTableBuilder {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
exports.AlterTableBuilder = AlterTableBuilder;
|
|
206
|
+
(0, prevent_await_js_1.preventAwait)(AlterTableBuilder, "don't await AlterTableBuilder instances");
|
|
206
207
|
class AlterTableColumnAlteringBuilder {
|
|
207
208
|
#props;
|
|
208
209
|
constructor(props) {
|
|
@@ -252,6 +253,4 @@ class AlterTableColumnAlteringBuilder {
|
|
|
252
253
|
}
|
|
253
254
|
}
|
|
254
255
|
exports.AlterTableColumnAlteringBuilder = AlterTableColumnAlteringBuilder;
|
|
255
|
-
(0, prevent_await_js_1.preventAwait)(AlterTableBuilder, "don't await AlterTableBuilder instances");
|
|
256
|
-
(0, prevent_await_js_1.preventAwait)(alter_column_builder_js_1.AlterColumnBuilder, "don't await AlterColumnBuilder instances");
|
|
257
256
|
(0, prevent_await_js_1.preventAwait)(AlterTableColumnAlteringBuilder, "don't await AlterTableColumnAlteringBuilder instances directly. To execute the query you need to call `execute`");
|