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
|
@@ -125,16 +125,29 @@ class DeleteQueryBuilder {
|
|
|
125
125
|
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
|
|
126
126
|
});
|
|
127
127
|
}
|
|
128
|
+
output(args) {
|
|
129
|
+
return new DeleteQueryBuilder({
|
|
130
|
+
...this.#props,
|
|
131
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
outputAll(table) {
|
|
135
|
+
return new DeleteQueryBuilder({
|
|
136
|
+
...this.#props,
|
|
137
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
128
140
|
/**
|
|
129
141
|
* Clears all `returning` clauses from the query.
|
|
130
142
|
*
|
|
131
143
|
* ### Examples
|
|
132
144
|
*
|
|
133
145
|
* ```ts
|
|
134
|
-
* db.deleteFrom('pet')
|
|
146
|
+
* await db.deleteFrom('pet')
|
|
135
147
|
* .returningAll()
|
|
136
148
|
* .where('name', '=', 'Max')
|
|
137
149
|
* .clearReturning()
|
|
150
|
+
* .execute()
|
|
138
151
|
* ```
|
|
139
152
|
*
|
|
140
153
|
* The generated SQL(PostgreSQL):
|
|
@@ -155,11 +168,12 @@ class DeleteQueryBuilder {
|
|
|
155
168
|
* ### Examples
|
|
156
169
|
*
|
|
157
170
|
* ```ts
|
|
158
|
-
* db.deleteFrom('pet')
|
|
171
|
+
* await db.deleteFrom('pet')
|
|
159
172
|
* .returningAll()
|
|
160
173
|
* .where('name', '=', 'Max')
|
|
161
174
|
* .limit(5)
|
|
162
175
|
* .clearLimit()
|
|
176
|
+
* .execute()
|
|
163
177
|
* ```
|
|
164
178
|
*
|
|
165
179
|
* The generated SQL(PostgreSQL):
|
|
@@ -180,11 +194,12 @@ class DeleteQueryBuilder {
|
|
|
180
194
|
* ### Examples
|
|
181
195
|
*
|
|
182
196
|
* ```ts
|
|
183
|
-
* db.deleteFrom('pet')
|
|
197
|
+
* await db.deleteFrom('pet')
|
|
184
198
|
* .returningAll()
|
|
185
199
|
* .where('name', '=', 'Max')
|
|
186
200
|
* .orderBy('id')
|
|
187
201
|
* .clearOrderBy()
|
|
202
|
+
* .execute()
|
|
188
203
|
* ```
|
|
189
204
|
*
|
|
190
205
|
* The generated SQL(PostgreSQL):
|
|
@@ -256,6 +271,12 @@ class DeleteQueryBuilder {
|
|
|
256
271
|
* .limit(5)
|
|
257
272
|
* .execute()
|
|
258
273
|
* ```
|
|
274
|
+
*
|
|
275
|
+
* The generated SQL (MySQL):
|
|
276
|
+
*
|
|
277
|
+
* ```sql
|
|
278
|
+
* delete from `pet` order by `created_at` limit ?
|
|
279
|
+
* ```
|
|
259
280
|
*/
|
|
260
281
|
limit(limit) {
|
|
261
282
|
return new DeleteQueryBuilder({
|
|
@@ -263,6 +284,33 @@ class DeleteQueryBuilder {
|
|
|
263
284
|
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithLimit(this.#props.queryNode, limit_node_js_1.LimitNode.create((0, value_parser_js_1.parseValueExpression)(limit))),
|
|
264
285
|
});
|
|
265
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* This can be used to add any additional SQL to the end of the query.
|
|
289
|
+
*
|
|
290
|
+
* ### Examples
|
|
291
|
+
*
|
|
292
|
+
* ```ts
|
|
293
|
+
* import { sql } from 'kysely'
|
|
294
|
+
*
|
|
295
|
+
* await db.deleteFrom('person')
|
|
296
|
+
* .where('first_name', '=', 'John')
|
|
297
|
+
* .modifyEnd(sql`-- This is a comment`)
|
|
298
|
+
* .execute()
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* The generated SQL (MySQL):
|
|
302
|
+
*
|
|
303
|
+
* ```sql
|
|
304
|
+
* delete from `person`
|
|
305
|
+
* where `first_name` = "John" -- This is a comment
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
modifyEnd(modifier) {
|
|
309
|
+
return new DeleteQueryBuilder({
|
|
310
|
+
...this.#props,
|
|
311
|
+
queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),
|
|
312
|
+
});
|
|
313
|
+
}
|
|
266
314
|
/**
|
|
267
315
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
268
316
|
* what the provided function returns.
|
|
@@ -275,12 +323,14 @@ class DeleteQueryBuilder {
|
|
|
275
323
|
* The next example uses a helper function `log` to log a query:
|
|
276
324
|
*
|
|
277
325
|
* ```ts
|
|
326
|
+
* import type { Compilable } from 'kysely'
|
|
327
|
+
*
|
|
278
328
|
* function log<T extends Compilable>(qb: T): T {
|
|
279
329
|
* console.log(qb.compile())
|
|
280
330
|
* return qb
|
|
281
331
|
* }
|
|
282
332
|
*
|
|
283
|
-
* db.deleteFrom('person')
|
|
333
|
+
* await db.deleteFrom('person')
|
|
284
334
|
* .$call(log)
|
|
285
335
|
* .execute()
|
|
286
336
|
* ```
|
|
@@ -316,11 +366,11 @@ class DeleteQueryBuilder {
|
|
|
316
366
|
* the code. In the example above the return type of the `deletePerson` function is:
|
|
317
367
|
*
|
|
318
368
|
* ```ts
|
|
319
|
-
* {
|
|
369
|
+
* Promise<{
|
|
320
370
|
* id: number
|
|
321
371
|
* first_name: string
|
|
322
372
|
* last_name?: string
|
|
323
|
-
* }
|
|
373
|
+
* }>
|
|
324
374
|
* ```
|
|
325
375
|
*/
|
|
326
376
|
$if(condition, func) {
|
|
@@ -357,25 +407,33 @@ class DeleteQueryBuilder {
|
|
|
357
407
|
* Turn this code:
|
|
358
408
|
*
|
|
359
409
|
* ```ts
|
|
410
|
+
* import type { Person } from 'type-editor' // imaginary module
|
|
411
|
+
*
|
|
360
412
|
* const person = await db.deleteFrom('person')
|
|
361
|
-
* .where('id', '=',
|
|
413
|
+
* .where('id', '=', 3)
|
|
362
414
|
* .where('nullable_column', 'is not', null)
|
|
363
415
|
* .returningAll()
|
|
364
416
|
* .executeTakeFirstOrThrow()
|
|
365
417
|
*
|
|
366
|
-
* if (person
|
|
418
|
+
* if (isWithNoNullValue(person)) {
|
|
367
419
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
368
420
|
* }
|
|
421
|
+
*
|
|
422
|
+
* function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
|
|
423
|
+
* return person.nullable_column != null
|
|
424
|
+
* }
|
|
369
425
|
* ```
|
|
370
426
|
*
|
|
371
427
|
* Into this:
|
|
372
428
|
*
|
|
373
429
|
* ```ts
|
|
430
|
+
* import type { NotNull } from 'kysely'
|
|
431
|
+
*
|
|
374
432
|
* const person = await db.deleteFrom('person')
|
|
375
|
-
* .where('id', '=',
|
|
433
|
+
* .where('id', '=', 3)
|
|
376
434
|
* .where('nullable_column', 'is not', null)
|
|
377
435
|
* .returningAll()
|
|
378
|
-
* .$narrowType<{ nullable_column:
|
|
436
|
+
* .$narrowType<{ nullable_column: NotNull }>()
|
|
379
437
|
* .executeTakeFirstOrThrow()
|
|
380
438
|
*
|
|
381
439
|
* functionThatExpectsPersonWithNonNullValue(person)
|
|
@@ -387,17 +445,17 @@ class DeleteQueryBuilder {
|
|
|
387
445
|
/**
|
|
388
446
|
* Asserts that query's output row type equals the given type `T`.
|
|
389
447
|
*
|
|
390
|
-
* This method can be used to simplify excessively complex types to make
|
|
448
|
+
* This method can be used to simplify excessively complex types to make TypeScript happy
|
|
391
449
|
* and much faster.
|
|
392
450
|
*
|
|
393
451
|
* Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
|
|
394
|
-
* for
|
|
452
|
+
* for TypeScript and you get errors like this:
|
|
395
453
|
*
|
|
396
454
|
* ```
|
|
397
455
|
* error TS2589: Type instantiation is excessively deep and possibly infinite.
|
|
398
456
|
* ```
|
|
399
457
|
*
|
|
400
|
-
* In these case you can often use this method to help
|
|
458
|
+
* In these case you can often use this method to help TypeScript a little bit. When you use this
|
|
401
459
|
* method to assert the output type of a query, Kysely can drop the complex output type that
|
|
402
460
|
* consists of multiple nested helper types and replace it with the simple asserted type.
|
|
403
461
|
*
|
|
@@ -407,22 +465,26 @@ class DeleteQueryBuilder {
|
|
|
407
465
|
* ### Examples
|
|
408
466
|
*
|
|
409
467
|
* ```ts
|
|
410
|
-
*
|
|
411
|
-
*
|
|
412
|
-
*
|
|
413
|
-
*
|
|
414
|
-
* .
|
|
415
|
-
*
|
|
416
|
-
*
|
|
417
|
-
*
|
|
418
|
-
*
|
|
419
|
-
*
|
|
420
|
-
* .
|
|
421
|
-
*
|
|
422
|
-
*
|
|
423
|
-
*
|
|
424
|
-
*
|
|
425
|
-
*
|
|
468
|
+
* import type { Species } from 'type-editor' // imaginary module
|
|
469
|
+
*
|
|
470
|
+
* async function deletePersonAndPets(personId: number) {
|
|
471
|
+
* return await db
|
|
472
|
+
* .with('deleted_person', (qb) => qb
|
|
473
|
+
* .deleteFrom('person')
|
|
474
|
+
* .where('id', '=', personId)
|
|
475
|
+
* .returning('first_name')
|
|
476
|
+
* .$assertType<{ first_name: string }>()
|
|
477
|
+
* )
|
|
478
|
+
* .with('deleted_pets', (qb) => qb
|
|
479
|
+
* .deleteFrom('pet')
|
|
480
|
+
* .where('owner_id', '=', personId)
|
|
481
|
+
* .returning(['name as pet_name', 'species'])
|
|
482
|
+
* .$assertType<{ pet_name: string, species: Species }>()
|
|
483
|
+
* )
|
|
484
|
+
* .selectFrom(['deleted_person', 'deleted_pets'])
|
|
485
|
+
* .selectAll()
|
|
486
|
+
* .execute()
|
|
487
|
+
* }
|
|
426
488
|
* ```
|
|
427
489
|
*/
|
|
428
490
|
$assertType() {
|
|
@@ -450,9 +512,11 @@ class DeleteQueryBuilder {
|
|
|
450
512
|
*/
|
|
451
513
|
async execute() {
|
|
452
514
|
const compiledQuery = this.compile();
|
|
453
|
-
const query = compiledQuery.query;
|
|
454
515
|
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
455
|
-
|
|
516
|
+
const { adapter } = this.#props.executor;
|
|
517
|
+
const query = compiledQuery.query;
|
|
518
|
+
if ((query.returning && adapter.supportsReturning) ||
|
|
519
|
+
(query.output && adapter.supportsOutput)) {
|
|
456
520
|
return result.rows;
|
|
457
521
|
}
|
|
458
522
|
return [
|
|
@@ -88,9 +88,10 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
88
88
|
* ### Examples
|
|
89
89
|
*
|
|
90
90
|
* ```ts
|
|
91
|
-
* db.selectFrom('person')
|
|
91
|
+
* await db.selectFrom('person')
|
|
92
92
|
* .selectAll('person')
|
|
93
93
|
* .where(db.fn('upper', ['first_name']), '=', 'JENNIFER')
|
|
94
|
+
* .execute()
|
|
94
95
|
* ```
|
|
95
96
|
*
|
|
96
97
|
* The generated SQL (PostgreSQL):
|
|
@@ -104,9 +105,12 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
104
105
|
* If you prefer readability over type-safety, you can always use raw `sql`:
|
|
105
106
|
*
|
|
106
107
|
* ```ts
|
|
107
|
-
*
|
|
108
|
+
* import { sql } from 'kysely'
|
|
109
|
+
*
|
|
110
|
+
* await db.selectFrom('person')
|
|
108
111
|
* .selectAll('person')
|
|
109
|
-
* .where(sql
|
|
112
|
+
* .where(sql<string>`upper(first_name)`, '=', 'JENNIFER')
|
|
113
|
+
* .execute()
|
|
110
114
|
* ```
|
|
111
115
|
*/
|
|
112
116
|
<O, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(name: string, args?: ReadonlyArray<RE>): ExpressionWrapper<DB, TB, O>;
|
|
@@ -123,11 +127,12 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
123
127
|
* ### Examples
|
|
124
128
|
*
|
|
125
129
|
* ```ts
|
|
126
|
-
* db.selectFrom('person')
|
|
130
|
+
* await db.selectFrom('person')
|
|
127
131
|
* .select(({ fn }) => [
|
|
128
132
|
* fn.agg<number>('rank').over().as('rank'),
|
|
129
133
|
* fn.agg<string>('group_concat', ['first_name']).distinct().as('first_names')
|
|
130
134
|
* ])
|
|
135
|
+
* .execute()
|
|
131
136
|
* ```
|
|
132
137
|
*
|
|
133
138
|
* The generated SQL (MySQL):
|
|
@@ -151,7 +156,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
151
156
|
* ### Examples
|
|
152
157
|
*
|
|
153
158
|
* ```ts
|
|
154
|
-
* db.selectFrom('toy')
|
|
159
|
+
* await db.selectFrom('toy')
|
|
155
160
|
* .select((eb) => eb.fn.avg('price').as('avg_price'))
|
|
156
161
|
* .execute()
|
|
157
162
|
* ```
|
|
@@ -162,18 +167,10 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
162
167
|
* select avg("price") as "avg_price" from "toy"
|
|
163
168
|
* ```
|
|
164
169
|
*
|
|
165
|
-
* You can limit column range to only columns participating in current query:
|
|
166
|
-
*
|
|
167
|
-
* ```ts
|
|
168
|
-
* db.selectFrom('toy')
|
|
169
|
-
* .select((eb) => eb.fn.avg('price').as('avg_price'))
|
|
170
|
-
* .execute()
|
|
171
|
-
* ```
|
|
172
|
-
*
|
|
173
170
|
* If this function is used in a `select` statement, the type of the selected
|
|
174
171
|
* expression will be `number | string` by default. This is because Kysely can't know the
|
|
175
172
|
* type the db driver outputs. Sometimes the output can be larger than the largest
|
|
176
|
-
*
|
|
173
|
+
* JavaScript number and a string is returned instead. Most drivers allow you
|
|
177
174
|
* to configure the output type of large numbers and Kysely can't know if you've
|
|
178
175
|
* done so.
|
|
179
176
|
*
|
|
@@ -181,7 +178,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
181
178
|
* the first type argument:
|
|
182
179
|
*
|
|
183
180
|
* ```ts
|
|
184
|
-
* db.selectFrom('toy')
|
|
181
|
+
* await db.selectFrom('toy')
|
|
185
182
|
* .select((eb) => eb.fn.avg<number>('price').as('avg_price'))
|
|
186
183
|
* .execute()
|
|
187
184
|
* ```
|
|
@@ -192,7 +189,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
192
189
|
* function.
|
|
193
190
|
*
|
|
194
191
|
* ```ts
|
|
195
|
-
* db.selectFrom('toy')
|
|
192
|
+
* await db.selectFrom('toy')
|
|
196
193
|
* .select((eb) => eb.fn.avg<number | null>('price').as('avg_price'))
|
|
197
194
|
* .execute()
|
|
198
195
|
* ```
|
|
@@ -219,35 +216,25 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
219
216
|
* ### Examples
|
|
220
217
|
*
|
|
221
218
|
* ```ts
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
219
|
+
* import { sql } from 'kysely'
|
|
220
|
+
*
|
|
221
|
+
* await db.selectFrom('person')
|
|
222
|
+
* .select((eb) => eb.fn.coalesce('nullable_column', sql.lit('<unknown>')).as('column'))
|
|
223
|
+
* .where('first_name', '=', 'Jessie')
|
|
225
224
|
* .execute()
|
|
226
225
|
* ```
|
|
227
226
|
*
|
|
228
227
|
* The generated SQL (PostgreSQL):
|
|
229
228
|
*
|
|
230
229
|
* ```sql
|
|
231
|
-
* select coalesce("
|
|
232
|
-
* from "participant" where "room_id" = $1
|
|
233
|
-
* ```
|
|
234
|
-
*
|
|
235
|
-
* You can limit column range to only columns participating in current query:
|
|
236
|
-
*
|
|
237
|
-
* ```ts
|
|
238
|
-
* db.selectFrom('participant')
|
|
239
|
-
* .select((eb) =>
|
|
240
|
-
* eb.fn.coalesce('nickname', sql<string>`'<anonymous>'`).as('nickname')
|
|
241
|
-
* )
|
|
242
|
-
* .where('room_id', '=', roomId)
|
|
243
|
-
* .execute()
|
|
230
|
+
* select coalesce("nullable_column", '<unknown>') as "column" from "person" where "first_name" = $1
|
|
244
231
|
* ```
|
|
245
232
|
*
|
|
246
233
|
* You can combine this function with other helpers in this module:
|
|
247
234
|
*
|
|
248
235
|
* ```ts
|
|
249
|
-
* db.selectFrom('person')
|
|
250
|
-
* .select((eb) => eb.fn.coalesce(eb.fn.avg<number | null>('age'),
|
|
236
|
+
* await db.selectFrom('person')
|
|
237
|
+
* .select((eb) => eb.fn.coalesce(eb.fn.avg<number | null>('age'), eb.lit(0)).as('avg_age'))
|
|
251
238
|
* .where('first_name', '=', 'Jennifer')
|
|
252
239
|
* .execute()
|
|
253
240
|
* ```
|
|
@@ -278,7 +265,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
278
265
|
* ### Examples
|
|
279
266
|
*
|
|
280
267
|
* ```ts
|
|
281
|
-
* db.selectFrom('toy')
|
|
268
|
+
* await db.selectFrom('toy')
|
|
282
269
|
* .select((eb) => eb.fn.count('id').as('num_toys'))
|
|
283
270
|
* .execute()
|
|
284
271
|
* ```
|
|
@@ -292,7 +279,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
292
279
|
* If this function is used in a `select` statement, the type of the selected
|
|
293
280
|
* expression will be `number | string | bigint` by default. This is because
|
|
294
281
|
* Kysely can't know the type the db driver outputs. Sometimes the output can
|
|
295
|
-
* be larger than the largest
|
|
282
|
+
* be larger than the largest JavaScript number and a string is returned instead.
|
|
296
283
|
* Most drivers allow you to configure the output type of large numbers and Kysely
|
|
297
284
|
* can't know if you've done so.
|
|
298
285
|
*
|
|
@@ -300,18 +287,10 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
300
287
|
* the type as the first type argument:
|
|
301
288
|
*
|
|
302
289
|
* ```ts
|
|
303
|
-
* db.selectFrom('toy')
|
|
290
|
+
* await db.selectFrom('toy')
|
|
304
291
|
* .select((eb) => eb.fn.count<number>('id').as('num_toys'))
|
|
305
292
|
* .execute()
|
|
306
293
|
* ```
|
|
307
|
-
*
|
|
308
|
-
* You can limit column range to only columns participating in current query:
|
|
309
|
-
*
|
|
310
|
-
* ```ts
|
|
311
|
-
* db.selectFrom('toy')
|
|
312
|
-
* .select((eb) => eb.fn.count('id').as('num_toys'))
|
|
313
|
-
* .execute()
|
|
314
|
-
* ```
|
|
315
294
|
*/
|
|
316
295
|
count<O extends number | string | bigint, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(expr: RE): AggregateFunctionBuilder<DB, TB, O>;
|
|
317
296
|
/**
|
|
@@ -330,7 +309,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
330
309
|
* ### Examples
|
|
331
310
|
*
|
|
332
311
|
* ```ts
|
|
333
|
-
* db.selectFrom('toy')
|
|
312
|
+
* await db.selectFrom('toy')
|
|
334
313
|
* .select((eb) => eb.fn.countAll().as('num_toys'))
|
|
335
314
|
* .execute()
|
|
336
315
|
* ```
|
|
@@ -344,7 +323,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
344
323
|
* If this is used in a `select` statement, the type of the selected expression
|
|
345
324
|
* will be `number | string | bigint` by default. This is because Kysely
|
|
346
325
|
* can't know the type the db driver outputs. Sometimes the output can be larger
|
|
347
|
-
* than the largest
|
|
326
|
+
* than the largest JavaScript number and a string is returned instead. Most
|
|
348
327
|
* drivers allow you to configure the output type of large numbers and Kysely
|
|
349
328
|
* can't know if you've done so.
|
|
350
329
|
*
|
|
@@ -352,7 +331,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
352
331
|
* the type as the first type argument:
|
|
353
332
|
*
|
|
354
333
|
* ```ts
|
|
355
|
-
* db.selectFrom('toy')
|
|
334
|
+
* await db.selectFrom('toy')
|
|
356
335
|
* .select((eb) => eb.fn.countAll<number>().as('num_toys'))
|
|
357
336
|
* .execute()
|
|
358
337
|
* ```
|
|
@@ -361,7 +340,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
361
340
|
* table:
|
|
362
341
|
*
|
|
363
342
|
* ```ts
|
|
364
|
-
* db.selectFrom('toy')
|
|
343
|
+
* await db.selectFrom('toy')
|
|
365
344
|
* .innerJoin('pet', 'pet.id', 'toy.pet_id')
|
|
366
345
|
* .select((eb) => eb.fn.countAll('toy').as('num_toys'))
|
|
367
346
|
* .execute()
|
|
@@ -373,15 +352,6 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
373
352
|
* select count("toy".*) as "num_toys"
|
|
374
353
|
* from "toy" inner join "pet" on "pet"."id" = "toy"."pet_id"
|
|
375
354
|
* ```
|
|
376
|
-
*
|
|
377
|
-
* You can limit table range to only tables participating in current query:
|
|
378
|
-
*
|
|
379
|
-
* ```ts
|
|
380
|
-
* db.selectFrom('toy')
|
|
381
|
-
* .innerJoin('pet', 'pet.id', 'toy.pet_id')
|
|
382
|
-
* .select((eb) => eb.fn.countAll('toy').as('num_toys'))
|
|
383
|
-
* .execute()
|
|
384
|
-
* ```
|
|
385
355
|
*/
|
|
386
356
|
countAll<O extends number | string | bigint, T extends TB = TB>(table: T): AggregateFunctionBuilder<DB, TB, O>;
|
|
387
357
|
countAll<O extends number | string | bigint>(): AggregateFunctionBuilder<DB, TB, O>;
|
|
@@ -401,7 +371,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
401
371
|
* ### Examples
|
|
402
372
|
*
|
|
403
373
|
* ```ts
|
|
404
|
-
* db.selectFrom('toy')
|
|
374
|
+
* await db.selectFrom('toy')
|
|
405
375
|
* .select((eb) => eb.fn.max('price').as('max_price'))
|
|
406
376
|
* .execute()
|
|
407
377
|
* ```
|
|
@@ -412,21 +382,13 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
412
382
|
* select max("price") as "max_price" from "toy"
|
|
413
383
|
* ```
|
|
414
384
|
*
|
|
415
|
-
* You can limit column range to only columns participating in current query:
|
|
416
|
-
*
|
|
417
|
-
* ```ts
|
|
418
|
-
* db.selectFrom('toy')
|
|
419
|
-
* .select((eb) => eb.fn.max('price').as('max_price'))
|
|
420
|
-
* .execute()
|
|
421
|
-
* ```
|
|
422
|
-
*
|
|
423
385
|
* Sometimes a null is returned, e.g. when row count is 0, and no `group by`
|
|
424
386
|
* was used. It is highly recommended to include null in the output type union
|
|
425
387
|
* and handle null values in post-execute code, or wrap the function with a {@link coalesce}
|
|
426
388
|
* function.
|
|
427
389
|
*
|
|
428
390
|
* ```ts
|
|
429
|
-
* db.selectFrom('toy')
|
|
391
|
+
* await db.selectFrom('toy')
|
|
430
392
|
* .select((eb) => eb.fn.max<number | null>('price').as('max_price'))
|
|
431
393
|
* .execute()
|
|
432
394
|
* ```
|
|
@@ -448,7 +410,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
448
410
|
* ### Examples
|
|
449
411
|
*
|
|
450
412
|
* ```ts
|
|
451
|
-
* db.selectFrom('toy')
|
|
413
|
+
* await db.selectFrom('toy')
|
|
452
414
|
* .select((eb) => eb.fn.min('price').as('min_price'))
|
|
453
415
|
* .execute()
|
|
454
416
|
* ```
|
|
@@ -459,21 +421,13 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
459
421
|
* select min("price") as "min_price" from "toy"
|
|
460
422
|
* ```
|
|
461
423
|
*
|
|
462
|
-
* You can limit column range to only columns participating in current query:
|
|
463
|
-
*
|
|
464
|
-
* ```ts
|
|
465
|
-
* db.selectFrom('toy')
|
|
466
|
-
* .select((eb) => eb.fn.min('price').as('min_price'))
|
|
467
|
-
* .execute()
|
|
468
|
-
* ```
|
|
469
|
-
*
|
|
470
424
|
* Sometimes a null is returned, e.g. when row count is 0, and no `group by`
|
|
471
425
|
* was used. It is highly recommended to include null in the output type union
|
|
472
426
|
* and handle null values in post-execute code, or wrap the function with a {@link coalesce}
|
|
473
427
|
* function.
|
|
474
428
|
*
|
|
475
429
|
* ```ts
|
|
476
|
-
* db.selectFrom('toy')
|
|
430
|
+
* await db.selectFrom('toy')
|
|
477
431
|
* .select((eb) => eb.fn.min<number | null>('price').as('min_price'))
|
|
478
432
|
* .execute()
|
|
479
433
|
* ```
|
|
@@ -491,7 +445,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
491
445
|
* ### Examples
|
|
492
446
|
*
|
|
493
447
|
* ```ts
|
|
494
|
-
* db.selectFrom('toy')
|
|
448
|
+
* await db.selectFrom('toy')
|
|
495
449
|
* .select((eb) => eb.fn.sum('price').as('total_price'))
|
|
496
450
|
* .execute()
|
|
497
451
|
* ```
|
|
@@ -502,18 +456,10 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
502
456
|
* select sum("price") as "total_price" from "toy"
|
|
503
457
|
* ```
|
|
504
458
|
*
|
|
505
|
-
* You can limit column range to only columns participating in current query:
|
|
506
|
-
*
|
|
507
|
-
* ```ts
|
|
508
|
-
* db.selectFrom('toy')
|
|
509
|
-
* .select((eb) => eb.fn.sum('price').as('total_price'))
|
|
510
|
-
* .execute()
|
|
511
|
-
* ```
|
|
512
|
-
*
|
|
513
459
|
* If this function is used in a `select` statement, the type of the selected
|
|
514
460
|
* expression will be `number | string` by default. This is because Kysely can't know the
|
|
515
461
|
* type the db driver outputs. Sometimes the output can be larger than the largest
|
|
516
|
-
*
|
|
462
|
+
* JavaScript number and a string is returned instead. Most drivers allow you
|
|
517
463
|
* to configure the output type of large numbers and Kysely can't know if you've
|
|
518
464
|
* done so.
|
|
519
465
|
*
|
|
@@ -521,7 +467,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
521
467
|
* the first type argument:
|
|
522
468
|
*
|
|
523
469
|
* ```ts
|
|
524
|
-
* db.selectFrom('toy')
|
|
470
|
+
* await db.selectFrom('toy')
|
|
525
471
|
* .select((eb) => eb.fn.sum<number>('price').as('total_price'))
|
|
526
472
|
* .execute()
|
|
527
473
|
* ```
|
|
@@ -532,7 +478,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
532
478
|
* function.
|
|
533
479
|
*
|
|
534
480
|
* ```ts
|
|
535
|
-
* db.selectFrom('toy')
|
|
481
|
+
* await db.selectFrom('toy')
|
|
536
482
|
* .select((eb) => eb.fn.sum<number | null>('price').as('total_price'))
|
|
537
483
|
* .execute()
|
|
538
484
|
* ```
|
|
@@ -548,11 +494,12 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
548
494
|
* In the following example, `nicknames` is assumed to be a column of type `string[]`:
|
|
549
495
|
*
|
|
550
496
|
* ```ts
|
|
551
|
-
* db.selectFrom('person')
|
|
497
|
+
* await db.selectFrom('person')
|
|
552
498
|
* .selectAll('person')
|
|
553
499
|
* .where((eb) => eb(
|
|
554
500
|
* eb.val('Jen'), '=', eb.fn.any('person.nicknames')
|
|
555
501
|
* ))
|
|
502
|
+
* .execute()
|
|
556
503
|
* ```
|
|
557
504
|
*
|
|
558
505
|
*
|
|
@@ -576,7 +523,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
576
523
|
* This function is only available on PostgreSQL.
|
|
577
524
|
*
|
|
578
525
|
* ```ts
|
|
579
|
-
* db.selectFrom('person')
|
|
526
|
+
* await db.selectFrom('person')
|
|
580
527
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
581
528
|
* .select((eb) => ['first_name', eb.fn.jsonAgg('pet').as('pets')])
|
|
582
529
|
* .groupBy('person.first_name')
|
|
@@ -599,7 +546,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
599
546
|
* This function is only available on PostgreSQL.
|
|
600
547
|
*
|
|
601
548
|
* ```ts
|
|
602
|
-
* db.selectFrom('person')
|
|
549
|
+
* await db.selectFrom('person')
|
|
603
550
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
604
551
|
* .select((eb) => ['first_name', eb.fn.toJson('pet').as('pet')])
|
|
605
552
|
* .execute()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createFunctionModule =
|
|
3
|
+
exports.createFunctionModule = createFunctionModule;
|
|
4
4
|
const expression_wrapper_js_1 = require("../expression/expression-wrapper.js");
|
|
5
5
|
const aggregate_function_node_js_1 = require("../operation-node/aggregate-function-node.js");
|
|
6
6
|
const function_node_js_1 = require("../operation-node/function-node.js");
|
|
@@ -60,4 +60,3 @@ function createFunctionModule() {
|
|
|
60
60
|
},
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
|
-
exports.createFunctionModule = createFunctionModule;
|