kysely 0.22.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +70 -0
- package/README.md +25 -2
- package/dist/cjs/dialect/database-introspector.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
- package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +6 -2
- package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
- package/dist/cjs/expression/expression.d.ts +100 -0
- package/dist/cjs/expression/expression.js +16 -0
- package/dist/cjs/index.d.ts +10 -6
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/migration/file-migration-provider.js +5 -3
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
- package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
- package/dist/cjs/operation-node/alias-node.d.ts +3 -11
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
- package/dist/cjs/operation-node/alter-table-node.js +9 -1
- package/dist/cjs/operation-node/and-node.d.ts +3 -4
- package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/cjs/operation-node/binary-operation-node.js +20 -0
- package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
- package/dist/cjs/operation-node/column-definition-node.js +16 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
- package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -2
- package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.js +1 -2
- package/dist/cjs/operation-node/explain-node.d.ts +2 -4
- package/dist/cjs/operation-node/explain-node.js +1 -1
- package/dist/cjs/operation-node/from-node.d.ts +3 -4
- package/dist/cjs/operation-node/generated-node.d.ts +2 -3
- package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/cjs/operation-node/having-node.d.ts +3 -4
- package/dist/cjs/operation-node/having-node.js +4 -4
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -5
- package/dist/cjs/operation-node/join-node.d.ts +5 -9
- package/dist/cjs/operation-node/join-node.js +6 -6
- package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/cjs/operation-node/on-conflict-node.js +12 -12
- package/dist/cjs/operation-node/on-node.d.ts +3 -4
- package/dist/cjs/operation-node/on-node.js +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +5 -3
- package/dist/cjs/operation-node/operator-node.js +3 -5
- package/dist/cjs/operation-node/or-node.d.ts +3 -4
- package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/cjs/operation-node/parens-node.d.ts +2 -3
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
- package/dist/cjs/operation-node/query-node.d.ts +2 -3
- package/dist/cjs/operation-node/query-node.js +6 -6
- package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/cjs/operation-node/select-modifier-node.js +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -6
- package/dist/cjs/operation-node/select-query-node.js +10 -10
- package/dist/cjs/operation-node/selection-node.d.ts +2 -3
- package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
- package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
- package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/cjs/operation-node/unary-operation-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/value-list-node.d.ts +2 -9
- package/dist/cjs/operation-node/where-node.d.ts +3 -4
- package/dist/cjs/operation-node/where-node.js +4 -4
- package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
- package/dist/cjs/parser/binary-operation-parser.js +99 -0
- package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
- package/dist/cjs/parser/coalesce-parser.js +11 -0
- package/dist/cjs/parser/data-type-parser.d.ts +5 -5
- package/dist/cjs/parser/default-value-parser.d.ts +4 -5
- package/dist/cjs/parser/default-value-parser.js +2 -2
- package/dist/cjs/parser/expression-parser.d.ts +10 -0
- package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
- package/dist/cjs/parser/identifier-parser.d.ts +2 -0
- package/dist/cjs/parser/identifier-parser.js +23 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
- package/dist/cjs/parser/insert-values-parser.js +2 -2
- package/dist/cjs/parser/join-parser.js +2 -2
- package/dist/cjs/parser/order-by-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +14 -14
- package/dist/cjs/parser/reference-parser.js +12 -9
- package/dist/cjs/parser/select-parser.d.ts +6 -7
- package/dist/cjs/parser/select-parser.js +2 -2
- package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
- package/dist/cjs/parser/table-parser.d.ts +11 -12
- package/dist/cjs/parser/table-parser.js +2 -2
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
- package/dist/cjs/parser/unary-operation-parser.js +17 -0
- package/dist/cjs/parser/update-set-parser.d.ts +1 -1
- package/dist/cjs/parser/value-parser.d.ts +5 -9
- package/dist/cjs/parser/value-parser.js +4 -4
- package/dist/cjs/parser/with-parser.d.ts +3 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +245 -14
- package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
- package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/delete-query-builder.js +19 -16
- package/dist/cjs/query-builder/function-module.d.ts +123 -22
- package/dist/cjs/query-builder/function-module.js +91 -48
- package/dist/cjs/query-builder/having-interface.d.ts +9 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/cjs/query-builder/insert-query-builder.js +11 -9
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +12 -1
- package/dist/cjs/query-builder/join-builder.d.ts +9 -8
- package/dist/cjs/query-builder/join-builder.js +10 -9
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
- package/dist/cjs/query-builder/select-query-builder.d.ts +82 -51
- package/dist/cjs/query-builder/select-query-builder.js +39 -37
- package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/update-query-builder.js +19 -16
- package/dist/cjs/query-builder/where-interface.d.ts +12 -11
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -3
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
- package/dist/cjs/query-executor/query-executor-base.js +16 -1
- package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
- package/dist/cjs/raw-builder/raw-builder.js +24 -14
- package/dist/cjs/raw-builder/sql.d.ts +4 -4
- package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
- package/dist/cjs/schema/alter-column-builder.js +55 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
- package/dist/cjs/schema/alter-table-builder.js +65 -280
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
- package/dist/cjs/schema/column-definition-builder.js +189 -0
- package/dist/cjs/schema/create-index-builder.d.ts +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +38 -5
- package/dist/cjs/schema/create-table-builder.js +36 -1
- package/dist/cjs/schema/create-view-builder.d.ts +3 -2
- package/dist/cjs/schema/schema.d.ts +2 -2
- package/dist/cjs/schema/schema.js +6 -5
- package/dist/cjs/util/compilable.d.ts +2 -2
- package/dist/cjs/util/explainable.d.ts +2 -2
- package/dist/cjs/util/infer-result.d.ts +46 -0
- package/dist/cjs/util/infer-result.js +2 -0
- package/dist/cjs/util/log-once.d.ts +5 -0
- package/dist/cjs/util/log-once.js +16 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +5 -1
- package/dist/cjs/util/type-utils.d.ts +3 -17
- package/dist/esm/dialect/database-introspector.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
- package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +6 -2
- package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/esm/expression/expression.d.ts +100 -0
- package/dist/esm/expression/expression.js +12 -0
- package/dist/esm/index.d.ts +10 -6
- package/dist/esm/index.js +6 -2
- package/dist/esm/migration/file-migration-provider.js +5 -3
- package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
- package/dist/esm/operation-node/aggregate-function-node.js +17 -0
- package/dist/esm/operation-node/alias-node.d.ts +3 -11
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
- package/dist/esm/operation-node/alter-table-node.js +9 -1
- package/dist/esm/operation-node/and-node.d.ts +3 -4
- package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/esm/operation-node/binary-operation-node.js +18 -0
- package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
- package/dist/esm/operation-node/column-definition-node.js +16 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/esm/operation-node/create-index-node.d.ts +1 -3
- package/dist/esm/operation-node/create-table-node.d.ts +4 -5
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -2
- package/dist/esm/operation-node/default-value-node.d.ts +2 -4
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.js +1 -2
- package/dist/esm/operation-node/explain-node.d.ts +2 -4
- package/dist/esm/operation-node/explain-node.js +1 -1
- package/dist/esm/operation-node/from-node.d.ts +3 -4
- package/dist/esm/operation-node/generated-node.d.ts +2 -3
- package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/esm/operation-node/having-node.d.ts +3 -4
- package/dist/esm/operation-node/having-node.js +4 -4
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
- package/dist/esm/operation-node/join-node.d.ts +5 -9
- package/dist/esm/operation-node/join-node.js +6 -6
- package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/esm/operation-node/on-conflict-node.js +12 -12
- package/dist/esm/operation-node/on-node.d.ts +3 -4
- package/dist/esm/operation-node/on-node.js +4 -4
- package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
- package/dist/esm/operation-node/operation-node-transformer.js +22 -15
- package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
- package/dist/esm/operation-node/operation-node-visitor.js +2 -1
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +5 -3
- package/dist/esm/operation-node/operator-node.js +2 -4
- package/dist/esm/operation-node/or-node.d.ts +3 -4
- package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/esm/operation-node/parens-node.d.ts +2 -3
- package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
- package/dist/esm/operation-node/query-node.d.ts +2 -3
- package/dist/esm/operation-node/query-node.js +6 -6
- package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/esm/operation-node/select-modifier-node.js +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -6
- package/dist/esm/operation-node/select-query-node.js +10 -10
- package/dist/esm/operation-node/selection-node.d.ts +2 -3
- package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
- package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
- package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/esm/operation-node/unary-operation-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/value-list-node.d.ts +2 -9
- package/dist/esm/operation-node/where-node.d.ts +3 -4
- package/dist/esm/operation-node/where-node.js +4 -4
- package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
- package/dist/esm/parser/binary-operation-parser.js +92 -0
- package/dist/esm/parser/coalesce-parser.d.ts +4 -0
- package/dist/esm/parser/coalesce-parser.js +8 -0
- package/dist/esm/parser/data-type-parser.d.ts +5 -5
- package/dist/esm/parser/default-value-parser.d.ts +4 -5
- package/dist/esm/parser/default-value-parser.js +2 -2
- package/dist/esm/parser/expression-parser.d.ts +10 -0
- package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
- package/dist/esm/parser/identifier-parser.d.ts +2 -0
- package/dist/esm/parser/identifier-parser.js +20 -0
- package/dist/esm/parser/insert-values-parser.d.ts +1 -1
- package/dist/esm/parser/insert-values-parser.js +2 -2
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/order-by-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +14 -14
- package/dist/esm/parser/reference-parser.js +10 -8
- package/dist/esm/parser/select-parser.d.ts +6 -7
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/set-operation-parser.d.ts +2 -4
- package/dist/esm/parser/table-parser.d.ts +11 -12
- package/dist/esm/parser/table-parser.js +2 -2
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
- package/dist/esm/parser/unary-operation-parser.js +13 -0
- package/dist/esm/parser/update-set-parser.d.ts +1 -1
- package/dist/esm/parser/value-parser.d.ts +5 -9
- package/dist/esm/parser/value-parser.js +4 -4
- package/dist/esm/parser/with-parser.d.ts +3 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
- package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
- package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/delete-query-builder.js +19 -16
- package/dist/esm/query-builder/function-module.d.ts +123 -22
- package/dist/esm/query-builder/function-module.js +92 -49
- package/dist/esm/query-builder/having-interface.d.ts +9 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/esm/query-builder/insert-query-builder.js +11 -9
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +12 -1
- package/dist/esm/query-builder/join-builder.d.ts +9 -8
- package/dist/esm/query-builder/join-builder.js +10 -9
- package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/esm/query-builder/on-conflict-builder.js +18 -17
- package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
- package/dist/esm/query-builder/select-query-builder.js +38 -36
- package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/update-query-builder.js +19 -16
- package/dist/esm/query-builder/where-interface.d.ts +12 -11
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
- package/dist/esm/query-compiler/default-query-compiler.js +38 -34
- package/dist/esm/query-executor/query-executor-base.js +16 -1
- package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
- package/dist/esm/raw-builder/raw-builder.js +23 -14
- package/dist/esm/raw-builder/sql.d.ts +4 -4
- package/dist/esm/schema/alter-column-builder.d.ts +28 -0
- package/dist/esm/schema/alter-column-builder.js +51 -0
- package/dist/esm/schema/alter-table-builder.d.ts +39 -341
- package/dist/esm/schema/alter-table-builder.js +61 -274
- package/dist/esm/schema/column-definition-builder.d.ts +43 -155
- package/dist/esm/schema/column-definition-builder.js +189 -0
- package/dist/esm/schema/create-index-builder.d.ts +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +38 -5
- package/dist/esm/schema/create-table-builder.js +36 -1
- package/dist/esm/schema/create-view-builder.d.ts +3 -2
- package/dist/esm/schema/schema.d.ts +2 -2
- package/dist/esm/schema/schema.js +6 -5
- package/dist/esm/util/compilable.d.ts +2 -2
- package/dist/esm/util/explainable.d.ts +2 -2
- package/dist/esm/util/infer-result.d.ts +46 -0
- package/dist/esm/util/infer-result.js +2 -0
- package/dist/esm/util/log-once.d.ts +5 -0
- package/dist/esm/util/log-once.js +13 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +3 -0
- package/dist/esm/util/type-utils.d.ts +3 -17
- package/package.json +1 -1
- package/dist/cjs/operation-node/filter-node.d.ts +0 -18
- package/dist/cjs/operation-node/filter-node.js +0 -20
- package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
- package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
- package/dist/cjs/parser/filter-parser.d.ts +0 -24
- package/dist/cjs/parser/filter-parser.js +0 -109
- package/dist/esm/operation-node/filter-node.d.ts +0 -18
- package/dist/esm/operation-node/filter-node.js +0 -18
- package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
- package/dist/esm/operation-node/operation-node-utils.js +0 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
- package/dist/esm/parser/filter-parser.d.ts +0 -24
- package/dist/esm/parser/filter-parser.js +0 -100
|
@@ -216,7 +216,7 @@ class CreateTableBuilder {
|
|
|
216
216
|
* ```ts
|
|
217
217
|
* db.schema.createTable('person')
|
|
218
218
|
* .modifyFront(sql`global temporary`)
|
|
219
|
-
* .addColumn('id', 'integer', col => col
|
|
219
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
220
220
|
* .addColumn('first_name', 'varchar(64)', col => col.notNull())
|
|
221
221
|
* .addColumn('last_name', 'varchar(64), col => col.notNull())
|
|
222
222
|
* .execute()
|
|
@@ -270,6 +270,41 @@ class CreateTableBuilder {
|
|
|
270
270
|
createTableNode: create_table_node_js_1.CreateTableNode.cloneWithEndModifier(this.#props.createTableNode, modifier.toOperationNode()),
|
|
271
271
|
});
|
|
272
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* Calls the given function passing `this` as the only argument.
|
|
275
|
+
*
|
|
276
|
+
* ### Examples
|
|
277
|
+
*
|
|
278
|
+
* ```ts
|
|
279
|
+
* db.schema
|
|
280
|
+
* .createTable('test')
|
|
281
|
+
* .call((builder) => builder.addColumn('id', 'integer'))
|
|
282
|
+
* .execute()
|
|
283
|
+
* ```
|
|
284
|
+
*
|
|
285
|
+
* ```ts
|
|
286
|
+
* const addDefaultColumns = <T extends string, C extends string = never>(
|
|
287
|
+
* builder: CreateTableBuilder<T, C>
|
|
288
|
+
* ) => {
|
|
289
|
+
* return builder
|
|
290
|
+
* .addColumn('id', 'integer', (col) => col.notNull())
|
|
291
|
+
* .addColumn('created_at', 'date', (col) =>
|
|
292
|
+
* col.notNull().defaultTo(sql`now()`)
|
|
293
|
+
* )
|
|
294
|
+
* .addColumn('updated_at', 'date', (col) =>
|
|
295
|
+
* col.notNull().defaultTo(sql`now()`)
|
|
296
|
+
* )
|
|
297
|
+
* }
|
|
298
|
+
*
|
|
299
|
+
* db.schema
|
|
300
|
+
* .createTable('test')
|
|
301
|
+
* .call(addDefaultColumns)
|
|
302
|
+
* .execute()
|
|
303
|
+
* ```
|
|
304
|
+
*/
|
|
305
|
+
call(func) {
|
|
306
|
+
return func(this);
|
|
307
|
+
}
|
|
273
308
|
toOperationNode() {
|
|
274
309
|
return this.#props.executor.transformQuery(this.#props.createTableNode, this.#props.queryId);
|
|
275
310
|
}
|
|
@@ -4,7 +4,8 @@ import { Compilable } from '../util/compilable.js';
|
|
|
4
4
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
5
5
|
import { QueryId } from '../util/query-id.js';
|
|
6
6
|
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|
7
|
-
import {
|
|
7
|
+
import { AnySelectQueryBuilder } from '../util/type-utils.js';
|
|
8
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
9
|
export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
|
|
9
10
|
#private;
|
|
10
11
|
constructor(props: CreateViewBuilderProps);
|
|
@@ -30,7 +31,7 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
|
|
|
30
31
|
* string opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
31
32
|
* into the query or raw expression passed to this method!
|
|
32
33
|
*/
|
|
33
|
-
as(query: AnySelectQueryBuilder |
|
|
34
|
+
as(query: AnySelectQueryBuilder | RawBuilder<any>): CreateViewBuilder;
|
|
34
35
|
toOperationNode(): CreateViewNode;
|
|
35
36
|
compile(): CompiledQuery;
|
|
36
37
|
execute(): Promise<void>;
|
|
@@ -186,7 +186,7 @@ export declare class SchemaModule {
|
|
|
186
186
|
* .execute()
|
|
187
187
|
* ```
|
|
188
188
|
*/
|
|
189
|
-
createType(
|
|
189
|
+
createType(typeName: string): CreateTypeBuilder;
|
|
190
190
|
/**
|
|
191
191
|
* Drop a type.
|
|
192
192
|
*
|
|
@@ -201,7 +201,7 @@ export declare class SchemaModule {
|
|
|
201
201
|
* .execute()
|
|
202
202
|
* ```
|
|
203
203
|
*/
|
|
204
|
-
dropType(
|
|
204
|
+
dropType(typeName: string): DropTypeBuilder;
|
|
205
205
|
/**
|
|
206
206
|
* Returns a copy of this schema module with the given plugin installed.
|
|
207
207
|
*/
|
|
@@ -26,6 +26,7 @@ const create_type_builder_js_1 = require("./create-type-builder.js");
|
|
|
26
26
|
const drop_type_builder_js_1 = require("./drop-type-builder.js");
|
|
27
27
|
const create_type_node_js_1 = require("../operation-node/create-type-node.js");
|
|
28
28
|
const drop_type_node_js_1 = require("../operation-node/drop-type-node.js");
|
|
29
|
+
const identifier_parser_js_1 = require("../parser/identifier-parser.js");
|
|
29
30
|
/**
|
|
30
31
|
* Provides methods for building database schema.
|
|
31
32
|
*/
|
|
@@ -201,7 +202,7 @@ class SchemaModule {
|
|
|
201
202
|
return new alter_table_builder_js_1.AlterTableBuilder({
|
|
202
203
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
203
204
|
executor: this.#executor,
|
|
204
|
-
|
|
205
|
+
node: alter_table_node_js_1.AlterTableNode.create(table),
|
|
205
206
|
});
|
|
206
207
|
}
|
|
207
208
|
/**
|
|
@@ -257,11 +258,11 @@ class SchemaModule {
|
|
|
257
258
|
* .execute()
|
|
258
259
|
* ```
|
|
259
260
|
*/
|
|
260
|
-
createType(
|
|
261
|
+
createType(typeName) {
|
|
261
262
|
return new create_type_builder_js_1.CreateTypeBuilder({
|
|
262
263
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
263
264
|
executor: this.#executor,
|
|
264
|
-
createTypeNode: create_type_node_js_1.CreateTypeNode.create(
|
|
265
|
+
createTypeNode: create_type_node_js_1.CreateTypeNode.create((0, identifier_parser_js_1.parseSchemableIdentifier)(typeName)),
|
|
265
266
|
});
|
|
266
267
|
}
|
|
267
268
|
/**
|
|
@@ -278,11 +279,11 @@ class SchemaModule {
|
|
|
278
279
|
* .execute()
|
|
279
280
|
* ```
|
|
280
281
|
*/
|
|
281
|
-
dropType(
|
|
282
|
+
dropType(typeName) {
|
|
282
283
|
return new drop_type_builder_js_1.DropTypeBuilder({
|
|
283
284
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
284
285
|
executor: this.#executor,
|
|
285
|
-
dropTypeNode: drop_type_node_js_1.DropTypeNode.create(
|
|
286
|
+
dropTypeNode: drop_type_node_js_1.DropTypeNode.create((0, identifier_parser_js_1.parseSchemableIdentifier)(typeName)),
|
|
286
287
|
});
|
|
287
288
|
}
|
|
288
289
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
2
|
export declare type ExplainFormat = 'text' | 'xml' | 'json' | 'yaml' | 'traditional' | 'tree';
|
|
3
3
|
export interface Explainable {
|
|
4
|
-
explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?:
|
|
4
|
+
explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<O[]>;
|
|
5
5
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
|
+
import { InsertResult } from '../query-builder/insert-result.js';
|
|
3
|
+
import { UpdateResult } from '../query-builder/update-result.js';
|
|
4
|
+
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
5
|
+
import { Compilable } from './compilable.js';
|
|
6
|
+
/**
|
|
7
|
+
* A helper type that allows inferring a select/insert/update/delete query's result
|
|
8
|
+
* type from a query builder or compiled query.
|
|
9
|
+
*
|
|
10
|
+
* ### Examples
|
|
11
|
+
*
|
|
12
|
+
* Infer a query builder's result type:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { InferResult } from 'kysely'
|
|
16
|
+
*
|
|
17
|
+
* const query = db
|
|
18
|
+
* .selectFrom('person')
|
|
19
|
+
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
20
|
+
* .select(['person.first_name', 'pet.name'])
|
|
21
|
+
*
|
|
22
|
+
* type QueryResult = InferResult<typeof query> // { first_name: string; name: string; }[]
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Infer a compiled query's result type:
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { InferResult } from 'kysely'
|
|
29
|
+
*
|
|
30
|
+
* const compiledQuery = db
|
|
31
|
+
* .insertInto('person')
|
|
32
|
+
* .values({
|
|
33
|
+
* first_name: 'Foo',
|
|
34
|
+
* last_name: 'Barson',
|
|
35
|
+
* gender: 'other',
|
|
36
|
+
* age: 15,
|
|
37
|
+
* })
|
|
38
|
+
* .returningAll()
|
|
39
|
+
* .compile()
|
|
40
|
+
*
|
|
41
|
+
* type QueryResult = InferResult<typeof compiledQuery> // Selectable<Person>[]
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
|
|
45
|
+
declare type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logOnce = void 0;
|
|
4
|
+
const LOGGED_MESSAGES = new Set();
|
|
5
|
+
/**
|
|
6
|
+
* Use for system-level logging, such as deprecation messages.
|
|
7
|
+
* Logs a message and ensures it won't be logged again.
|
|
8
|
+
*/
|
|
9
|
+
function logOnce(message) {
|
|
10
|
+
if (LOGGED_MESSAGES.has(message)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
LOGGED_MESSAGES.add(message);
|
|
14
|
+
console.log(message);
|
|
15
|
+
}
|
|
16
|
+
exports.logOnce = logOnce;
|
|
@@ -11,6 +11,7 @@ export declare function isBuffer(obj: unknown): obj is {
|
|
|
11
11
|
};
|
|
12
12
|
export declare function isFunction(obj: unknown): obj is Function;
|
|
13
13
|
export declare function isObject(obj: unknown): obj is Record<string, unknown>;
|
|
14
|
+
export declare function isArrayBufferOrView(obj: unknown): obj is ArrayBuffer | ArrayBufferView;
|
|
14
15
|
export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
|
|
15
16
|
export declare function freeze<T>(obj: T): Readonly<T>;
|
|
16
17
|
export declare function asArray<T>(arg: T | T[]): T[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compare = exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isBuffer = exports.isBigInt = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isUndefined = exports.isEmpty = void 0;
|
|
3
|
+
exports.compare = exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isArrayBufferOrView = exports.isObject = exports.isFunction = exports.isBuffer = exports.isBigInt = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isUndefined = exports.isEmpty = void 0;
|
|
4
4
|
function isEmpty(obj) {
|
|
5
5
|
if (Array.isArray(obj) || isString(obj) || isBuffer(obj)) {
|
|
6
6
|
return obj.length === 0;
|
|
@@ -53,6 +53,10 @@ function isObject(obj) {
|
|
|
53
53
|
return typeof obj === 'object' && obj !== null;
|
|
54
54
|
}
|
|
55
55
|
exports.isObject = isObject;
|
|
56
|
+
function isArrayBufferOrView(obj) {
|
|
57
|
+
return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);
|
|
58
|
+
}
|
|
59
|
+
exports.isArrayBufferOrView = isArrayBufferOrView;
|
|
56
60
|
function getLast(arr) {
|
|
57
61
|
return arr[arr.length - 1];
|
|
58
62
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
|
-
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
1
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
4
2
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
5
3
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
6
4
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
7
|
-
import { AggregateFunctionBuilder, AliasedAggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
|
|
8
5
|
/**
|
|
9
6
|
* Given an object type, extracts the union of all value types.
|
|
10
7
|
*/
|
|
@@ -100,24 +97,11 @@ export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
|
|
|
100
97
|
*/
|
|
101
98
|
export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
|
|
102
99
|
export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
|
|
103
|
-
export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
|
|
104
|
-
export declare type AnyRawBuilder = RawBuilder<any>;
|
|
105
|
-
export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
|
|
106
|
-
export declare type AnyAliasedAggregateFunctionBuilder = AliasedAggregateFunctionBuilder<any, any, any, any>;
|
|
107
|
-
export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnySelectQueryBuilder;
|
|
108
|
-
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
|
|
109
|
-
export declare type RawBuilderFactory<DB, TB extends keyof DB, O = any> = (qb: ExpressionBuilder<DB, TB>) => RawBuilder<O>;
|
|
110
|
-
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
|
|
111
|
-
export declare type AggregateFunctionBuilderFactory<DB, TB extends keyof DB, O = unknown> = (qb: ExpressionBuilder<DB, TB>) => AggregateFunctionBuilder<DB, TB, O>;
|
|
112
|
-
export declare type AliasedAggregateFunctionBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedAggregateFunctionBuilder;
|
|
113
100
|
export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
|
|
114
101
|
export declare type UnknownRow = Record<string, unknown>;
|
|
115
102
|
export declare type Nullable<T> = {
|
|
116
103
|
[P in keyof T]: T[P] | null;
|
|
117
104
|
};
|
|
118
|
-
export declare type NullableValues<T> = {
|
|
119
|
-
[P in keyof T]: Nullable<T[P]>;
|
|
120
|
-
};
|
|
121
105
|
/**
|
|
122
106
|
* Takes all properties from T1 and merges all properties from T2
|
|
123
107
|
* that don't exist in T1 as optional properties.
|
|
@@ -139,3 +123,5 @@ export declare type NullableValues<T> = {
|
|
|
139
123
|
* // { name: string, age: number, species?: 'cat' | 'dog' }
|
|
140
124
|
*/
|
|
141
125
|
export declare type MergePartial<T1, T2> = T1 & Partial<Omit<T2, keyof T1>>;
|
|
126
|
+
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
127
|
+
export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
|
|
@@ -49,6 +49,10 @@ export interface ColumnMetadata {
|
|
|
49
49
|
* on PostgreSQL, `INTEGER` on SQLite and `int` on MySQL.
|
|
50
50
|
*/
|
|
51
51
|
readonly dataType: string;
|
|
52
|
+
/**
|
|
53
|
+
* The schema this column's data type was created in.
|
|
54
|
+
*/
|
|
55
|
+
readonly dataTypeSchema?: string;
|
|
52
56
|
readonly isAutoIncrementing: boolean;
|
|
53
57
|
readonly isNullable: boolean;
|
|
54
58
|
readonly hasDefaultValue: boolean;
|
|
@@ -84,15 +84,18 @@ class MysqlConnection {
|
|
|
84
84
|
const result = await this.#executeQuery(compiledQuery);
|
|
85
85
|
if (isOkPacket(result)) {
|
|
86
86
|
const { insertId, affectedRows } = result;
|
|
87
|
+
const numAffectedRows = affectedRows !== undefined && affectedRows !== null
|
|
88
|
+
? BigInt(affectedRows)
|
|
89
|
+
: undefined;
|
|
87
90
|
return {
|
|
88
91
|
insertId: insertId !== undefined &&
|
|
89
92
|
insertId !== null &&
|
|
90
93
|
insertId.toString() !== '0'
|
|
91
94
|
? BigInt(insertId)
|
|
92
95
|
: undefined,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
// TODO: remove.
|
|
97
|
+
numUpdatedOrDeletedRows: numAffectedRows,
|
|
98
|
+
numAffectedRows,
|
|
96
99
|
rows: [],
|
|
97
100
|
};
|
|
98
101
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { sql } from '../../raw-builder/sql.js';
|
|
3
3
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
4
4
|
// Random id for our transaction lock.
|
|
5
|
-
const LOCK_ID =
|
|
5
|
+
const LOCK_ID = BigInt('3853314791062309107');
|
|
6
6
|
export class PostgresAdapter extends DialectAdapterBase {
|
|
7
7
|
get supportsTransactionalDdl() {
|
|
8
8
|
return true;
|
|
@@ -69,9 +69,14 @@ class PostgresConnection {
|
|
|
69
69
|
const result = await this.#client.query(compiledQuery.sql, [
|
|
70
70
|
...compiledQuery.parameters,
|
|
71
71
|
]);
|
|
72
|
-
if (result.command === '
|
|
72
|
+
if (result.command === 'INSERT' ||
|
|
73
|
+
result.command === 'UPDATE' ||
|
|
74
|
+
result.command === 'DELETE') {
|
|
75
|
+
const numAffectedRows = BigInt(result.rowCount);
|
|
73
76
|
return {
|
|
74
|
-
|
|
77
|
+
// TODO: remove.
|
|
78
|
+
numUpdatedOrDeletedRows: numAffectedRows,
|
|
79
|
+
numAffectedRows,
|
|
75
80
|
rows: result.rows ?? [],
|
|
76
81
|
};
|
|
77
82
|
}
|
|
@@ -17,10 +17,16 @@ export class PostgresIntrospector {
|
|
|
17
17
|
}
|
|
18
18
|
async getTables(options = { withInternalKyselyTables: false }) {
|
|
19
19
|
let query = this.#db
|
|
20
|
+
// column
|
|
20
21
|
.selectFrom('pg_catalog.pg_attribute as a')
|
|
22
|
+
// table
|
|
21
23
|
.innerJoin('pg_catalog.pg_class as c', 'a.attrelid', 'c.oid')
|
|
24
|
+
// table schema
|
|
22
25
|
.innerJoin('pg_catalog.pg_namespace as ns', 'c.relnamespace', 'ns.oid')
|
|
26
|
+
// column data type
|
|
23
27
|
.innerJoin('pg_catalog.pg_type as typ', 'a.atttypid', 'typ.oid')
|
|
28
|
+
// column data type schema
|
|
29
|
+
.innerJoin('pg_catalog.pg_namespace as dtns', 'typ.typnamespace', 'dtns.oid')
|
|
24
30
|
.select([
|
|
25
31
|
'a.attname as column',
|
|
26
32
|
'a.attnotnull as not_null',
|
|
@@ -28,6 +34,7 @@ export class PostgresIntrospector {
|
|
|
28
34
|
'c.relname as table',
|
|
29
35
|
'ns.nspname as schema',
|
|
30
36
|
'typ.typname as type',
|
|
37
|
+
'dtns.nspname as type_schema',
|
|
31
38
|
// Detect if the column is auto incrementing by finding the sequence
|
|
32
39
|
// that is created for `serial` and `bigserial` columns.
|
|
33
40
|
this.#db
|
|
@@ -77,6 +84,7 @@ export class PostgresIntrospector {
|
|
|
77
84
|
table.columns.push(freeze({
|
|
78
85
|
name: it.column,
|
|
79
86
|
dataType: it.type,
|
|
87
|
+
dataTypeSchema: it.type_schema,
|
|
80
88
|
isNullable: !it.not_null,
|
|
81
89
|
isAutoIncrementing: !!it.auto_incrementing,
|
|
82
90
|
hasDefaultValue: it.has_default,
|
|
@@ -55,10 +55,11 @@ class SqliteConnection {
|
|
|
55
55
|
}
|
|
56
56
|
else {
|
|
57
57
|
const { changes, lastInsertRowid } = stmt.run(parameters);
|
|
58
|
+
const numAffectedRows = changes !== undefined && changes !== null ? BigInt(changes) : undefined;
|
|
58
59
|
return Promise.resolve({
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
// TODO: remove.
|
|
61
|
+
numUpdatedOrDeletedRows: numAffectedRows,
|
|
62
|
+
numAffectedRows,
|
|
62
63
|
insertId: lastInsertRowid !== undefined && lastInsertRowid !== null
|
|
63
64
|
? BigInt(lastInsertRowid)
|
|
64
65
|
: undefined,
|
|
@@ -10,10 +10,14 @@ export interface DatabaseConnection {
|
|
|
10
10
|
}
|
|
11
11
|
export interface QueryResult<O> {
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
* the number of rows the query updated/deleted.
|
|
13
|
+
* @deprecated use {@link QueryResult.numAffectedRows} instead.
|
|
15
14
|
*/
|
|
16
15
|
readonly numUpdatedOrDeletedRows?: bigint;
|
|
16
|
+
/**
|
|
17
|
+
* This is defined for insert, update and delete queries and contains
|
|
18
|
+
* the number of rows the query inserted/updated/deleted.
|
|
19
|
+
*/
|
|
20
|
+
readonly numAffectedRows?: bigint;
|
|
17
21
|
/**
|
|
18
22
|
* This is defined for insert queries on dialects that return
|
|
19
23
|
* the auto incrementing primary key from an insert.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
-
import {
|
|
2
|
+
import { SimpleReferenceExpressionNode } from '../operation-node/simple-reference-expression-node.js';
|
|
4
3
|
export declare class DynamicReferenceBuilder<R extends string = never> implements OperationNodeSource {
|
|
5
4
|
#private;
|
|
6
5
|
get dynamicReference(): string;
|
|
@@ -14,6 +13,6 @@ export declare class DynamicReferenceBuilder<R extends string = never> implement
|
|
|
14
13
|
*/
|
|
15
14
|
protected get refType(): R;
|
|
16
15
|
constructor(reference: string);
|
|
17
|
-
toOperationNode():
|
|
16
|
+
toOperationNode(): SimpleReferenceExpressionNode;
|
|
18
17
|
}
|
|
19
18
|
export declare function isDynamicReferenceBuilder(obj: unknown): obj is DynamicReferenceBuilder<any>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./dynamic-reference-builder.d.ts" />
|
|
2
2
|
import { isOperationNodeSource, } from '../operation-node/operation-node-source.js';
|
|
3
|
-
import {
|
|
3
|
+
import { parseSimpleReferenceExpression } from '../parser/reference-parser.js';
|
|
4
4
|
import { isObject, isString } from '../util/object-utils.js';
|
|
5
5
|
export class DynamicReferenceBuilder {
|
|
6
6
|
#dynamicReference;
|
|
@@ -22,7 +22,7 @@ export class DynamicReferenceBuilder {
|
|
|
22
22
|
this.#dynamicReference = reference;
|
|
23
23
|
}
|
|
24
24
|
toOperationNode() {
|
|
25
|
-
return
|
|
25
|
+
return parseSimpleReferenceExpression(this.#dynamicReference);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
export function isDynamicReferenceBuilder(obj) {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
4
|
+
/**
|
|
5
|
+
* `Expression` represents an arbitrary SQL expression with a type.
|
|
6
|
+
*
|
|
7
|
+
* Most Kysely methods accept instances of `Expression` and most classes like `SelectQueryBuilder`
|
|
8
|
+
* and the return value of the {@link sql} template tag implement it.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const exp1: Expression<string> = sql<string>`CONCAT('hello', ' ', 'world')`
|
|
12
|
+
* const exp2: Expression<{ first_name: string }> = db.selectFrom('person').select('first_name')
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* You can implement the `Expression` interface to create your own type-safe utilities for Kysely.
|
|
16
|
+
*/
|
|
17
|
+
export interface Expression<T> extends OperationNodeSource {
|
|
18
|
+
/**
|
|
19
|
+
* All expressions need to have this getter for complicated type-related reasons.
|
|
20
|
+
* Simply add this getter for your expression and always return `undefined` from it:
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
24
|
+
* get expressionType(): T | undefined {
|
|
25
|
+
* return undefined
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* The getter is needed to make the expression assignable to another expression only
|
|
31
|
+
* if the types `T` are assignable. Without this property (or some other property
|
|
32
|
+
* that references `T`), you could assing `Expression<string>` to `Expression<number>`.
|
|
33
|
+
*/
|
|
34
|
+
get expressionType(): T | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
37
|
+
*
|
|
38
|
+
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
39
|
+
* template tag to build the node:
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
43
|
+
* toOperationNode(): OperationNode {
|
|
44
|
+
* return sql`some sql here`.toOperationNode()
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
toOperationNode(): OperationNode;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Just like `Expression<T>` but also holds an alias type `A`.
|
|
53
|
+
*
|
|
54
|
+
* `AliasedExpression<T, A>` can be used in places where, in addition to the value type `T`, you
|
|
55
|
+
* also need a name `A` for that value. For example anything you can pass into the `select` method
|
|
56
|
+
* needs to implement an `AliasedExpression<T, A>`. `A` becomes the name of the selected expression
|
|
57
|
+
* in the result and `T` becomes its type.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
*
|
|
61
|
+
* ```ts
|
|
62
|
+
* class SomeAliasedExpression<T, A extends string> implements AliasedExpression<T, A> {
|
|
63
|
+
* #expression: Expression<T>
|
|
64
|
+
* #alias: A
|
|
65
|
+
*
|
|
66
|
+
* constructor(expression: Expression<T>, alias: A) {
|
|
67
|
+
* this.#expression = expression
|
|
68
|
+
* this.#alias = alias
|
|
69
|
+
* }
|
|
70
|
+
*
|
|
71
|
+
* get expression(): Expression<T> {
|
|
72
|
+
* return this.#expression
|
|
73
|
+
* }
|
|
74
|
+
*
|
|
75
|
+
* get alias(): A {
|
|
76
|
+
* return this.#alias
|
|
77
|
+
* }
|
|
78
|
+
*
|
|
79
|
+
* toOperationNode(): AliasNode {
|
|
80
|
+
* return AliasNode.create(this.#expression.toOperationNode(), IdentifierNode.create(this.#alias))
|
|
81
|
+
* }
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export interface AliasedExpression<T, A extends string> extends OperationNodeSource {
|
|
86
|
+
/**
|
|
87
|
+
* Returns the aliased expression.
|
|
88
|
+
*/
|
|
89
|
+
get expression(): Expression<T>;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the alias.
|
|
92
|
+
*/
|
|
93
|
+
get alias(): A;
|
|
94
|
+
/**
|
|
95
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
96
|
+
*/
|
|
97
|
+
toOperationNode(): AliasNode;
|
|
98
|
+
}
|
|
99
|
+
export declare function isExpression(obj: unknown): obj is Expression<any>;
|
|
100
|
+
export declare function isAliasedExpression(obj: unknown): obj is AliasedExpression<any, any>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="./expression.d.ts" />
|
|
2
|
+
import { isOperationNodeSource, } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { isObject, isString } from '../util/object-utils.js';
|
|
4
|
+
export function isExpression(obj) {
|
|
5
|
+
return isObject(obj) && 'expressionType' in obj && isOperationNodeSource(obj);
|
|
6
|
+
}
|
|
7
|
+
export function isAliasedExpression(obj) {
|
|
8
|
+
return (isObject(obj) &&
|
|
9
|
+
'expression' in obj &&
|
|
10
|
+
isString(obj.alias) &&
|
|
11
|
+
isOperationNodeSource(obj));
|
|
12
|
+
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './kysely.js';
|
|
2
2
|
export * from './query-creator.js';
|
|
3
|
+
export * from './expression/expression.js';
|
|
3
4
|
export * from './query-builder/where-interface.js';
|
|
4
5
|
export * from './query-builder/returning-interface.js';
|
|
5
6
|
export * from './query-builder/having-interface.js';
|
|
@@ -38,6 +39,7 @@ export * from './schema/foreign-key-constraint-builder.js';
|
|
|
38
39
|
export * from './schema/alter-table-builder.js';
|
|
39
40
|
export * from './schema/create-view-builder.js';
|
|
40
41
|
export * from './schema/drop-view-builder.js';
|
|
42
|
+
export * from './schema/alter-column-builder.js';
|
|
41
43
|
export * from './dynamic/dynamic.js';
|
|
42
44
|
export * from './driver/driver.js';
|
|
43
45
|
export * from './driver/database-connection.js';
|
|
@@ -103,7 +105,6 @@ export * from './operation-node/drop-schema-node.js';
|
|
|
103
105
|
export * from './operation-node/drop-table-node.js';
|
|
104
106
|
export * from './operation-node/drop-type-node.js';
|
|
105
107
|
export * from './operation-node/drop-view-node.js';
|
|
106
|
-
export * from './operation-node/filter-node.js';
|
|
107
108
|
export * from './operation-node/foreign-key-constraint-node.js';
|
|
108
109
|
export * from './operation-node/from-node.js';
|
|
109
110
|
export * from './operation-node/generated-node.js';
|
|
@@ -122,7 +123,6 @@ export * from './operation-node/on-duplicate-key-node.js';
|
|
|
122
123
|
export * from './operation-node/on-node.js';
|
|
123
124
|
export * from './operation-node/operation-node-source.js';
|
|
124
125
|
export * from './operation-node/operation-node-transformer.js';
|
|
125
|
-
export * from './operation-node/operation-node-utils.js';
|
|
126
126
|
export * from './operation-node/operation-node-visitor.js';
|
|
127
127
|
export * from './operation-node/operation-node.js';
|
|
128
128
|
export * from './operation-node/operator-node.js';
|
|
@@ -157,18 +157,22 @@ export * from './operation-node/over-node.js';
|
|
|
157
157
|
export * from './operation-node/partition-by-node.js';
|
|
158
158
|
export * from './operation-node/partition-by-item-node.js';
|
|
159
159
|
export * from './operation-node/set-operation-node.js';
|
|
160
|
+
export * from './operation-node/binary-operation-node.js';
|
|
161
|
+
export * from './operation-node/unary-operation-node.js';
|
|
160
162
|
export * from './util/column-type.js';
|
|
161
163
|
export * from './util/compilable.js';
|
|
162
164
|
export * from './util/explainable.js';
|
|
163
165
|
export * from './util/log.js';
|
|
164
|
-
export { AnyColumn,
|
|
166
|
+
export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, AnySelectQueryBuilder, Equals, UnknownRow, } from './util/type-utils.js';
|
|
167
|
+
export * from './util/infer-result.js';
|
|
168
|
+
export { logOnce } from './util/log-once.js';
|
|
165
169
|
export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
|
|
166
|
-
export { ReferenceExpression, ReferenceExpressionOrList, StringReference, } from './parser/reference-parser.js';
|
|
170
|
+
export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
|
|
167
171
|
export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
|
|
168
|
-
export { FilterValueExpression, FilterValueExpressionOrList, ExistsExpression, FilterOperator, } from './parser/filter-parser.js';
|
|
169
172
|
export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
|
|
170
173
|
export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
|
|
171
174
|
export { InsertObject } from './parser/insert-values-parser.js';
|
|
172
175
|
export { MutationObject } from './parser/update-set-parser.js';
|
|
173
176
|
export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
|
|
174
|
-
export {
|
|
177
|
+
export { ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList, } from './parser/binary-operation-parser.js';
|
|
178
|
+
export { ExistsExpression } from './parser/unary-operation-parser.js';
|