kysely 0.21.6 → 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 +27 -4
- 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 +17 -8
- package/dist/cjs/index.js +15 -4
- package/dist/cjs/kysely.d.ts +3 -3
- package/dist/cjs/kysely.js +3 -3
- package/dist/cjs/migration/file-migration-provider.js +11 -4
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +25 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +48 -0
- package/dist/cjs/operation-node/alias-node.d.ts +3 -10
- 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/group-by-node.d.ts +1 -1
- package/dist/cjs/operation-node/group-by-node.js +3 -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 -4
- 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 +14 -4
- package/dist/cjs/operation-node/operation-node-transformer.js +60 -20
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +14 -4
- package/dist/cjs/operation-node/operation-node-visitor.js +7 -2
- 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/over-node.d.ts +19 -0
- package/dist/cjs/operation-node/over-node.js +35 -0
- package/dist/cjs/operation-node/parens-node.d.ts +2 -3
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +13 -0
- package/dist/cjs/operation-node/{filter-node.js → partition-by-item-node.js} +6 -8
- package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
- package/dist/cjs/operation-node/partition-by-node.js +24 -0
- 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 +8 -9
- package/dist/cjs/operation-node/select-query-node.js +14 -14
- package/dist/cjs/operation-node/selection-node.d.ts +2 -3
- package/dist/cjs/operation-node/set-operation-node.d.ts +15 -0
- package/dist/cjs/operation-node/{union-node.js → set-operation-node.js} +7 -6
- 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 -8
- 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/group-by-parser.d.ts +1 -1
- package/dist/cjs/parser/group-by-parser.js +2 -2
- 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/parse-utils.d.ts +2 -0
- package/dist/cjs/parser/parse-utils.js +9 -1
- package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
- package/dist/cjs/parser/partition-by-parser.js +9 -0
- package/dist/cjs/parser/reference-parser.d.ts +14 -13
- package/dist/cjs/parser/reference-parser.js +12 -9
- package/dist/cjs/parser/select-parser.d.ts +6 -6
- package/dist/cjs/parser/select-parser.js +2 -2
- package/dist/cjs/parser/set-operation-parser.d.ts +3 -0
- package/dist/cjs/parser/set-operation-parser.js +8 -0
- 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 -8
- 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 +348 -0
- package/dist/cjs/query-builder/aggregate-function-builder.js +298 -0
- 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/expression-builder.d.ts +3 -3
- package/dist/cjs/query-builder/expression-builder.js +3 -3
- package/dist/cjs/query-builder/function-module.d.ts +241 -0
- package/dist/cjs/query-builder/function-module.js +214 -0
- 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/over-builder.d.ts +59 -0
- package/dist/cjs/query-builder/over-builder.js +50 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +138 -47
- package/dist/cjs/query-builder/select-query-builder.js +122 -40
- 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 +15 -5
- package/dist/cjs/query-compiler/default-query-compiler.js +78 -47
- 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 +15 -7
- package/dist/cjs/raw-builder/sql.js +6 -0
- 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 -13
- 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 +17 -8
- package/dist/esm/index.js +13 -4
- package/dist/esm/kysely.d.ts +3 -3
- package/dist/esm/kysely.js +3 -3
- package/dist/esm/migration/file-migration-provider.js +11 -4
- package/dist/esm/operation-node/aggregate-function-node.d.ts +25 -0
- package/dist/esm/operation-node/aggregate-function-node.js +46 -0
- package/dist/esm/operation-node/alias-node.d.ts +3 -10
- 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/group-by-node.d.ts +1 -1
- package/dist/esm/operation-node/group-by-node.js +3 -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 -4
- 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 +14 -4
- package/dist/esm/operation-node/operation-node-transformer.js +60 -20
- package/dist/esm/operation-node/operation-node-visitor.d.ts +14 -4
- package/dist/esm/operation-node/operation-node-visitor.js +7 -2
- 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/over-node.d.ts +19 -0
- package/dist/esm/operation-node/over-node.js +33 -0
- package/dist/esm/operation-node/parens-node.d.ts +2 -3
- package/dist/esm/operation-node/partition-by-item-node.d.ts +13 -0
- package/dist/esm/operation-node/partition-by-item-node.js +16 -0
- package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
- package/dist/esm/operation-node/partition-by-node.js +22 -0
- 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 +8 -9
- package/dist/esm/operation-node/select-query-node.js +14 -14
- package/dist/esm/operation-node/selection-node.d.ts +2 -3
- package/dist/esm/operation-node/set-operation-node.d.ts +15 -0
- package/dist/esm/operation-node/set-operation-node.js +18 -0
- 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 -8
- 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/group-by-parser.d.ts +1 -1
- package/dist/esm/parser/group-by-parser.js +2 -2
- 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/parse-utils.d.ts +2 -0
- package/dist/esm/parser/parse-utils.js +7 -0
- package/dist/esm/parser/partition-by-parser.d.ts +6 -0
- package/dist/esm/parser/partition-by-parser.js +6 -0
- package/dist/esm/parser/reference-parser.d.ts +14 -13
- package/dist/esm/parser/reference-parser.js +10 -8
- package/dist/esm/parser/select-parser.d.ts +6 -6
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/set-operation-parser.d.ts +3 -0
- package/dist/esm/parser/set-operation-parser.js +5 -0
- 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 -8
- 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 +348 -0
- package/dist/esm/query-builder/aggregate-function-builder.js +294 -0
- 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/expression-builder.d.ts +3 -3
- package/dist/esm/query-builder/expression-builder.js +3 -3
- package/dist/esm/query-builder/function-module.d.ts +241 -0
- package/dist/esm/query-builder/function-module.js +211 -0
- 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/over-builder.d.ts +59 -0
- package/dist/esm/query-builder/over-builder.js +47 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +138 -47
- package/dist/esm/query-builder/select-query-builder.js +120 -38
- 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 +15 -5
- package/dist/esm/query-compiler/default-query-compiler.js +79 -48
- 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 +15 -7
- package/dist/esm/raw-builder/sql.js +6 -0
- 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 -13
- package/package.json +4 -1
- package/dist/cjs/operation-node/filter-node.d.ts +0 -18
- package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -17
- package/dist/cjs/operation-node/union-node.d.ts +0 -16
- package/dist/cjs/parser/complex-expression-parser.d.ts +0 -10
- package/dist/cjs/parser/filter-parser.d.ts +0 -24
- package/dist/cjs/parser/filter-parser.js +0 -109
- package/dist/cjs/parser/union-parser.d.ts +0 -5
- package/dist/cjs/parser/union-parser.js +0 -8
- package/dist/cjs/query-builder/function-builder.d.ts +0 -133
- package/dist/cjs/query-builder/function-builder.js +0 -160
- 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 -17
- package/dist/esm/operation-node/operation-node-utils.js +0 -2
- package/dist/esm/operation-node/union-node.d.ts +0 -16
- package/dist/esm/operation-node/union-node.js +0 -17
- package/dist/esm/parser/complex-expression-parser.d.ts +0 -10
- package/dist/esm/parser/filter-parser.d.ts +0 -24
- package/dist/esm/parser/filter-parser.js +0 -100
- package/dist/esm/parser/union-parser.d.ts +0 -5
- package/dist/esm/parser/union-parser.js +0 -5
- package/dist/esm/query-builder/function-builder.d.ts +0 -133
- package/dist/esm/query-builder/function-builder.js +0 -157
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
2
|
import { OnModifyForeignAction } from '../operation-node/references-node.js';
|
|
3
3
|
import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
|
|
4
|
-
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
5
4
|
import { DefaultValueExpression } from '../parser/default-value-parser.js';
|
|
6
|
-
|
|
5
|
+
import { Expression } from '../expression/expression.js';
|
|
6
|
+
export declare class ColumnDefinitionBuilder implements OperationNodeSource {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(node: ColumnDefinitionNode);
|
|
7
9
|
/**
|
|
8
10
|
* Adds `auto_increment` or `autoincrement` to the column definition
|
|
9
11
|
* depending on the dialect.
|
|
@@ -11,14 +13,14 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
11
13
|
* Some dialects like PostgreSQL don't support this. On PostgreSQL
|
|
12
14
|
* you can use the `serial` or `bigserial` data type instead.
|
|
13
15
|
*/
|
|
14
|
-
autoIncrement():
|
|
16
|
+
autoIncrement(): ColumnDefinitionBuilder;
|
|
15
17
|
/**
|
|
16
18
|
* Makes the column the primary key.
|
|
17
19
|
*
|
|
18
20
|
* If you want to specify a composite primary key use the
|
|
19
21
|
* {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
|
|
20
22
|
*/
|
|
21
|
-
primaryKey():
|
|
23
|
+
primaryKey(): ColumnDefinitionBuilder;
|
|
22
24
|
/**
|
|
23
25
|
* Adds a foreign key constraint for the column.
|
|
24
26
|
*
|
|
@@ -32,7 +34,7 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
32
34
|
* col.references('person.id')
|
|
33
35
|
* ```
|
|
34
36
|
*/
|
|
35
|
-
references(ref: string):
|
|
37
|
+
references(ref: string): ColumnDefinitionBuilder;
|
|
36
38
|
/**
|
|
37
39
|
* Adds an `on delete` constraint for the foreign key column.
|
|
38
40
|
*
|
|
@@ -46,7 +48,7 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
46
48
|
* col.references('person.id').onDelete('cascade')
|
|
47
49
|
* ```
|
|
48
50
|
*/
|
|
49
|
-
onDelete(onDelete: OnModifyForeignAction):
|
|
51
|
+
onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
|
|
50
52
|
/**
|
|
51
53
|
* Adds an `on update` constraint for the foreign key column.
|
|
52
54
|
*
|
|
@@ -56,21 +58,21 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
56
58
|
* col.references('person.id').onUpdate('cascade')
|
|
57
59
|
* ```
|
|
58
60
|
*/
|
|
59
|
-
onUpdate(onUpdate: OnModifyForeignAction):
|
|
61
|
+
onUpdate(onUpdate: OnModifyForeignAction): ColumnDefinitionBuilder;
|
|
60
62
|
/**
|
|
61
63
|
* Adds a unique constraint for the column.
|
|
62
64
|
*/
|
|
63
|
-
unique():
|
|
65
|
+
unique(): ColumnDefinitionBuilder;
|
|
64
66
|
/**
|
|
65
67
|
* Adds a `not null` constraint for the column.
|
|
66
68
|
*/
|
|
67
|
-
notNull():
|
|
69
|
+
notNull(): ColumnDefinitionBuilder;
|
|
68
70
|
/**
|
|
69
71
|
* Adds a `unsigned` modifier for the column.
|
|
70
72
|
*
|
|
71
73
|
* This only works on some dialects like MySQL.
|
|
72
74
|
*/
|
|
73
|
-
unsigned():
|
|
75
|
+
unsigned(): ColumnDefinitionBuilder;
|
|
74
76
|
/**
|
|
75
77
|
* Adds a default value constraint for the column.
|
|
76
78
|
*
|
|
@@ -99,7 +101,7 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
99
101
|
* .execute()
|
|
100
102
|
* ```
|
|
101
103
|
*/
|
|
102
|
-
defaultTo(value: DefaultValueExpression):
|
|
104
|
+
defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
|
|
103
105
|
/**
|
|
104
106
|
* Adds a check constraint for the column.
|
|
105
107
|
*
|
|
@@ -116,7 +118,7 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
116
118
|
* .execute()
|
|
117
119
|
* ```
|
|
118
120
|
*/
|
|
119
|
-
check(expression:
|
|
121
|
+
check(expression: Expression<any>): ColumnDefinitionBuilder;
|
|
120
122
|
/**
|
|
121
123
|
* Makes the column a generated column using a `generated always as` statement.
|
|
122
124
|
*
|
|
@@ -133,15 +135,15 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
133
135
|
* .execute()
|
|
134
136
|
* ```
|
|
135
137
|
*/
|
|
136
|
-
generatedAlwaysAs(expression:
|
|
138
|
+
generatedAlwaysAs(expression: Expression<any>): ColumnDefinitionBuilder;
|
|
137
139
|
/**
|
|
138
140
|
* Adds the `generated always as identity` specifier on supported dialects.
|
|
139
141
|
*/
|
|
140
|
-
generatedAlwaysAsIdentity():
|
|
142
|
+
generatedAlwaysAsIdentity(): ColumnDefinitionBuilder;
|
|
141
143
|
/**
|
|
142
144
|
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
143
145
|
*/
|
|
144
|
-
generatedByDefaultAsIdentity():
|
|
146
|
+
generatedByDefaultAsIdentity(): ColumnDefinitionBuilder;
|
|
145
147
|
/**
|
|
146
148
|
* Makes a generated column stored instead of virtual. This method can only
|
|
147
149
|
* be used with {@link generatedAlwaysAs}
|
|
@@ -158,165 +160,51 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
158
160
|
* .execute()
|
|
159
161
|
* ```
|
|
160
162
|
*/
|
|
161
|
-
stored():
|
|
162
|
-
}
|
|
163
|
-
export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderInterface, OperationNodeSource {
|
|
164
|
-
#private;
|
|
165
|
-
constructor(node: ColumnDefinitionNode);
|
|
166
|
-
/**
|
|
167
|
-
* Adds `auto_increment` or `autoincrement` to the column definition
|
|
168
|
-
* depending on the dialect.
|
|
169
|
-
*
|
|
170
|
-
* Some dialects like PostgreSQL don't support this. On PostgreSQL
|
|
171
|
-
* you can use the `serial` or `bigserial` data type instead.
|
|
172
|
-
*/
|
|
173
|
-
autoIncrement(): ColumnDefinitionBuilder;
|
|
174
|
-
/**
|
|
175
|
-
* Makes the column the primary key.
|
|
176
|
-
*
|
|
177
|
-
* If you want to specify a composite primary key use the
|
|
178
|
-
* {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
|
|
179
|
-
*/
|
|
180
|
-
primaryKey(): ColumnDefinitionBuilder;
|
|
181
|
-
/**
|
|
182
|
-
* Adds a foreign key constraint for the column.
|
|
183
|
-
*
|
|
184
|
-
* If your database engine doesn't support foreign key constraints in the
|
|
185
|
-
* column definition (like MySQL 5) you need to call the table level
|
|
186
|
-
* {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
|
|
187
|
-
*
|
|
188
|
-
* ### Examples
|
|
189
|
-
*
|
|
190
|
-
* ```ts
|
|
191
|
-
* col.references('person.id')
|
|
192
|
-
* ```
|
|
193
|
-
*/
|
|
194
|
-
references(ref: string): ColumnDefinitionBuilder;
|
|
195
|
-
/**
|
|
196
|
-
* Adds an `on delete` constraint for the foreign key column.
|
|
197
|
-
*
|
|
198
|
-
* If your database engine doesn't support foreign key constraints in the
|
|
199
|
-
* column definition (like MySQL 5) you need to call the table level
|
|
200
|
-
* {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
|
|
201
|
-
*
|
|
202
|
-
* ### Examples
|
|
203
|
-
*
|
|
204
|
-
* ```ts
|
|
205
|
-
* col.references('person.id').onDelete('cascade')
|
|
206
|
-
* ```
|
|
207
|
-
*/
|
|
208
|
-
onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
|
|
209
|
-
/**
|
|
210
|
-
* Adds an `on update` constraint for the foreign key column.
|
|
211
|
-
*
|
|
212
|
-
* ### Examples
|
|
213
|
-
*
|
|
214
|
-
* ```ts
|
|
215
|
-
* col.references('person.id').onUpdate('cascade')
|
|
216
|
-
* ```
|
|
217
|
-
*/
|
|
218
|
-
onUpdate(onUpdate: OnModifyForeignAction): ColumnDefinitionBuilder;
|
|
219
|
-
/**
|
|
220
|
-
* Adds a unique constraint for the column.
|
|
221
|
-
*/
|
|
222
|
-
unique(): ColumnDefinitionBuilder;
|
|
223
|
-
/**
|
|
224
|
-
* Adds a `not null` constraint for the column.
|
|
225
|
-
*/
|
|
226
|
-
notNull(): ColumnDefinitionBuilder;
|
|
227
|
-
/**
|
|
228
|
-
* Adds a `unsigned` modifier for the column.
|
|
229
|
-
*
|
|
230
|
-
* This only works on some dialects like MySQL.
|
|
231
|
-
*/
|
|
232
|
-
unsigned(): ColumnDefinitionBuilder;
|
|
163
|
+
stored(): ColumnDefinitionBuilder;
|
|
233
164
|
/**
|
|
234
|
-
*
|
|
165
|
+
* This can be used to add any additional SQL right after the column's data type.
|
|
235
166
|
*
|
|
236
167
|
* ### Examples
|
|
237
168
|
*
|
|
238
169
|
* ```ts
|
|
239
|
-
* db.schema
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
170
|
+
* db.schema.createTable('person')
|
|
171
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
172
|
+
* .addColumn('first_name', 'varchar(36)', col => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull())
|
|
173
|
+
* .execute()
|
|
243
174
|
* ```
|
|
244
175
|
*
|
|
245
|
-
*
|
|
246
|
-
* an arbitrary SQL expression using the {@link sql} template tag:
|
|
247
|
-
*
|
|
248
|
-
* ```ts
|
|
249
|
-
* import { sql } from 'kysely'
|
|
176
|
+
* The generated SQL (MySQL):
|
|
250
177
|
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
* (col) => col.defaultTo(sql`any SQL here`)
|
|
257
|
-
* )
|
|
258
|
-
* .execute()
|
|
178
|
+
* ```sql
|
|
179
|
+
* create table `person` (
|
|
180
|
+
* `id` integer primary key,
|
|
181
|
+
* `first_name` varchar(36) collate utf8mb4_general_ci not null
|
|
182
|
+
* )
|
|
259
183
|
* ```
|
|
260
184
|
*/
|
|
261
|
-
|
|
185
|
+
modifyFront(modifier: Expression<any>): ColumnDefinitionBuilder;
|
|
262
186
|
/**
|
|
263
|
-
*
|
|
187
|
+
* This can be used to add any additional SQL to the end of the column definition.
|
|
264
188
|
*
|
|
265
189
|
* ### Examples
|
|
266
190
|
*
|
|
267
191
|
* ```ts
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
273
|
-
* col.check(sql`number_of_legs < 5`)
|
|
274
|
-
* )
|
|
275
|
-
* .execute()
|
|
192
|
+
* db.schema.createTable('person')
|
|
193
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
194
|
+
* .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.literal('it is not polite to ask a woman her age')}`))
|
|
195
|
+
* .execute()
|
|
276
196
|
* ```
|
|
277
|
-
*/
|
|
278
|
-
check(expression: AnyRawBuilder): ColumnDefinitionBuilder;
|
|
279
|
-
/**
|
|
280
|
-
* Makes the column a generated column using a `generated always as` statement.
|
|
281
197
|
*
|
|
282
|
-
*
|
|
283
|
-
*
|
|
284
|
-
* ```ts
|
|
285
|
-
* import { sql } from 'kysely'
|
|
198
|
+
* The generated SQL (MySQL):
|
|
286
199
|
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
* .execute()
|
|
200
|
+
* ```sql
|
|
201
|
+
* create table `person` (
|
|
202
|
+
* `id` integer primary key,
|
|
203
|
+
* `age` integer unsigned not null comment 'it is not polite to ask a woman her age'
|
|
204
|
+
* )
|
|
293
205
|
* ```
|
|
294
206
|
*/
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* Adds the `generated always as identity` specifier on supported dialects.
|
|
298
|
-
*/
|
|
299
|
-
generatedAlwaysAsIdentity(): ColumnDefinitionBuilder;
|
|
300
|
-
/**
|
|
301
|
-
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
302
|
-
*/
|
|
303
|
-
generatedByDefaultAsIdentity(): ColumnDefinitionBuilder;
|
|
304
|
-
/**
|
|
305
|
-
* Makes a generated column stored instead of virtual. This method can only
|
|
306
|
-
* be used with {@link generatedAlwaysAs}
|
|
307
|
-
*
|
|
308
|
-
* ### Examples
|
|
309
|
-
*
|
|
310
|
-
* ```ts
|
|
311
|
-
* db.schema
|
|
312
|
-
* .createTable('person')
|
|
313
|
-
* .addColumn('full_name', 'varchar(255)', (col) => col
|
|
314
|
-
* .generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
315
|
-
* .stored()
|
|
316
|
-
* )
|
|
317
|
-
* .execute()
|
|
318
|
-
* ```
|
|
319
|
-
*/
|
|
320
|
-
stored(): ColumnDefinitionBuilder;
|
|
207
|
+
modifyEnd(modifier: Expression<any>): ColumnDefinitionBuilder;
|
|
321
208
|
toOperationNode(): ColumnDefinitionNode;
|
|
322
209
|
}
|
|
210
|
+
export declare type ColumnDefinitionBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
|
|
@@ -15,12 +15,38 @@ export class ColumnDefinitionBuilder {
|
|
|
15
15
|
constructor(node) {
|
|
16
16
|
this.#node = node;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Adds `auto_increment` or `autoincrement` to the column definition
|
|
20
|
+
* depending on the dialect.
|
|
21
|
+
*
|
|
22
|
+
* Some dialects like PostgreSQL don't support this. On PostgreSQL
|
|
23
|
+
* you can use the `serial` or `bigserial` data type instead.
|
|
24
|
+
*/
|
|
18
25
|
autoIncrement() {
|
|
19
26
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));
|
|
20
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Makes the column the primary key.
|
|
30
|
+
*
|
|
31
|
+
* If you want to specify a composite primary key use the
|
|
32
|
+
* {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
|
|
33
|
+
*/
|
|
21
34
|
primaryKey() {
|
|
22
35
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));
|
|
23
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Adds a foreign key constraint for the column.
|
|
39
|
+
*
|
|
40
|
+
* If your database engine doesn't support foreign key constraints in the
|
|
41
|
+
* column definition (like MySQL 5) you need to call the table level
|
|
42
|
+
* {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
|
|
43
|
+
*
|
|
44
|
+
* ### Examples
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* col.references('person.id')
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
24
50
|
references(ref) {
|
|
25
51
|
const references = parseStringReference(ref);
|
|
26
52
|
if (!ReferenceNode.is(references) || SelectAllNode.is(references.column)) {
|
|
@@ -32,6 +58,19 @@ export class ColumnDefinitionBuilder {
|
|
|
32
58
|
]),
|
|
33
59
|
}));
|
|
34
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Adds an `on delete` constraint for the foreign key column.
|
|
63
|
+
*
|
|
64
|
+
* If your database engine doesn't support foreign key constraints in the
|
|
65
|
+
* column definition (like MySQL 5) you need to call the table level
|
|
66
|
+
* {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
|
|
67
|
+
*
|
|
68
|
+
* ### Examples
|
|
69
|
+
*
|
|
70
|
+
* ```ts
|
|
71
|
+
* col.references('person.id').onDelete('cascade')
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
35
74
|
onDelete(onDelete) {
|
|
36
75
|
if (!this.#node.references) {
|
|
37
76
|
throw new Error('on delete constraint can only be added for foreign keys');
|
|
@@ -40,6 +79,15 @@ export class ColumnDefinitionBuilder {
|
|
|
40
79
|
references: ReferencesNode.cloneWithOnDelete(this.#node.references, parseOnModifyForeignAction(onDelete)),
|
|
41
80
|
}));
|
|
42
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Adds an `on update` constraint for the foreign key column.
|
|
84
|
+
*
|
|
85
|
+
* ### Examples
|
|
86
|
+
*
|
|
87
|
+
* ```ts
|
|
88
|
+
* col.references('person.id').onUpdate('cascade')
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
43
91
|
onUpdate(onUpdate) {
|
|
44
92
|
if (!this.#node.references) {
|
|
45
93
|
throw new Error('on update constraint can only be added for foreign keys');
|
|
@@ -48,40 +96,133 @@ export class ColumnDefinitionBuilder {
|
|
|
48
96
|
references: ReferencesNode.cloneWithOnUpdate(this.#node.references, parseOnModifyForeignAction(onUpdate)),
|
|
49
97
|
}));
|
|
50
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Adds a unique constraint for the column.
|
|
101
|
+
*/
|
|
51
102
|
unique() {
|
|
52
103
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
|
|
53
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Adds a `not null` constraint for the column.
|
|
107
|
+
*/
|
|
54
108
|
notNull() {
|
|
55
109
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));
|
|
56
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Adds a `unsigned` modifier for the column.
|
|
113
|
+
*
|
|
114
|
+
* This only works on some dialects like MySQL.
|
|
115
|
+
*/
|
|
57
116
|
unsigned() {
|
|
58
117
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));
|
|
59
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Adds a default value constraint for the column.
|
|
121
|
+
*
|
|
122
|
+
* ### Examples
|
|
123
|
+
*
|
|
124
|
+
* ```ts
|
|
125
|
+
* db.schema
|
|
126
|
+
* .createTable('pet')
|
|
127
|
+
* .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
|
|
128
|
+
* .execute()
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* Values passed to `defaultTo` are interpreted as value literals by default. You can define
|
|
132
|
+
* an arbitrary SQL expression using the {@link sql} template tag:
|
|
133
|
+
*
|
|
134
|
+
* ```ts
|
|
135
|
+
* import { sql } from 'kysely'
|
|
136
|
+
*
|
|
137
|
+
* db.schema
|
|
138
|
+
* .createTable('pet')
|
|
139
|
+
* .addColumn(
|
|
140
|
+
* 'number_of_legs',
|
|
141
|
+
* 'integer',
|
|
142
|
+
* (col) => col.defaultTo(sql`any SQL here`)
|
|
143
|
+
* )
|
|
144
|
+
* .execute()
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
60
147
|
defaultTo(value) {
|
|
61
148
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
62
149
|
defaultTo: DefaultValueNode.create(parseDefaultValueExpression(value)),
|
|
63
150
|
}));
|
|
64
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Adds a check constraint for the column.
|
|
154
|
+
*
|
|
155
|
+
* ### Examples
|
|
156
|
+
*
|
|
157
|
+
* ```ts
|
|
158
|
+
* import { sql } from 'kysely'
|
|
159
|
+
*
|
|
160
|
+
* db.schema
|
|
161
|
+
* .createTable('pet')
|
|
162
|
+
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
163
|
+
* col.check(sql`number_of_legs < 5`)
|
|
164
|
+
* )
|
|
165
|
+
* .execute()
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
65
168
|
check(expression) {
|
|
66
169
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
67
170
|
check: CheckConstraintNode.create(expression.toOperationNode()),
|
|
68
171
|
}));
|
|
69
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Makes the column a generated column using a `generated always as` statement.
|
|
175
|
+
*
|
|
176
|
+
* ### Examples
|
|
177
|
+
*
|
|
178
|
+
* ```ts
|
|
179
|
+
* import { sql } from 'kysely'
|
|
180
|
+
*
|
|
181
|
+
* db.schema
|
|
182
|
+
* .createTable('person')
|
|
183
|
+
* .addColumn('full_name', 'varchar(255)',
|
|
184
|
+
* (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
|
|
185
|
+
* )
|
|
186
|
+
* .execute()
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
70
189
|
generatedAlwaysAs(expression) {
|
|
71
190
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
72
191
|
generated: GeneratedNode.createWithExpression(expression.toOperationNode()),
|
|
73
192
|
}));
|
|
74
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Adds the `generated always as identity` specifier on supported dialects.
|
|
196
|
+
*/
|
|
75
197
|
generatedAlwaysAsIdentity() {
|
|
76
198
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
77
199
|
generated: GeneratedNode.create({ identity: true, always: true }),
|
|
78
200
|
}));
|
|
79
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
204
|
+
*/
|
|
80
205
|
generatedByDefaultAsIdentity() {
|
|
81
206
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
82
207
|
generated: GeneratedNode.create({ identity: true, byDefault: true }),
|
|
83
208
|
}));
|
|
84
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Makes a generated column stored instead of virtual. This method can only
|
|
212
|
+
* be used with {@link generatedAlwaysAs}
|
|
213
|
+
*
|
|
214
|
+
* ### Examples
|
|
215
|
+
*
|
|
216
|
+
* ```ts
|
|
217
|
+
* db.schema
|
|
218
|
+
* .createTable('person')
|
|
219
|
+
* .addColumn('full_name', 'varchar(255)', (col) => col
|
|
220
|
+
* .generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
221
|
+
* .stored()
|
|
222
|
+
* )
|
|
223
|
+
* .execute()
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
85
226
|
stored() {
|
|
86
227
|
if (!this.#node.generated) {
|
|
87
228
|
throw new Error('stored() can only be called after generatedAlwaysAs');
|
|
@@ -92,6 +233,54 @@ export class ColumnDefinitionBuilder {
|
|
|
92
233
|
}),
|
|
93
234
|
}));
|
|
94
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* This can be used to add any additional SQL right after the column's data type.
|
|
238
|
+
*
|
|
239
|
+
* ### Examples
|
|
240
|
+
*
|
|
241
|
+
* ```ts
|
|
242
|
+
* db.schema.createTable('person')
|
|
243
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
244
|
+
* .addColumn('first_name', 'varchar(36)', col => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull())
|
|
245
|
+
* .execute()
|
|
246
|
+
* ```
|
|
247
|
+
*
|
|
248
|
+
* The generated SQL (MySQL):
|
|
249
|
+
*
|
|
250
|
+
* ```sql
|
|
251
|
+
* create table `person` (
|
|
252
|
+
* `id` integer primary key,
|
|
253
|
+
* `first_name` varchar(36) collate utf8mb4_general_ci not null
|
|
254
|
+
* )
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
257
|
+
modifyFront(modifier) {
|
|
258
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* This can be used to add any additional SQL to the end of the column definition.
|
|
262
|
+
*
|
|
263
|
+
* ### Examples
|
|
264
|
+
*
|
|
265
|
+
* ```ts
|
|
266
|
+
* db.schema.createTable('person')
|
|
267
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
268
|
+
* .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.literal('it is not polite to ask a woman her age')}`))
|
|
269
|
+
* .execute()
|
|
270
|
+
* ```
|
|
271
|
+
*
|
|
272
|
+
* The generated SQL (MySQL):
|
|
273
|
+
*
|
|
274
|
+
* ```sql
|
|
275
|
+
* create table `person` (
|
|
276
|
+
* `id` integer primary key,
|
|
277
|
+
* `age` integer unsigned not null comment 'it is not polite to ask a woman her age'
|
|
278
|
+
* )
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
modifyEnd(modifier) {
|
|
282
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));
|
|
283
|
+
}
|
|
95
284
|
toOperationNode() {
|
|
96
285
|
return this.#node;
|
|
97
286
|
}
|
|
@@ -4,7 +4,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
|
4
4
|
import { Compilable } from '../util/compilable.js';
|
|
5
5
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
6
6
|
import { QueryId } from '../util/query-id.js';
|
|
7
|
-
import {
|
|
7
|
+
import { Expression } from '../expression/expression.js';
|
|
8
8
|
export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
|
|
9
9
|
#private;
|
|
10
10
|
constructor(props: CreateIndexBuilderProps);
|
|
@@ -43,7 +43,7 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
|
|
|
43
43
|
* .execute()
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
|
-
expression(expression:
|
|
46
|
+
expression(expression: Expression<any>): CreateIndexBuilder;
|
|
47
47
|
/**
|
|
48
48
|
* Specifies the index type.
|
|
49
49
|
*/
|
|
@@ -7,7 +7,7 @@ import { ColumnDefinitionBuilder } from './column-definition-builder.js';
|
|
|
7
7
|
import { QueryId } from '../util/query-id.js';
|
|
8
8
|
import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
|
|
9
9
|
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|
10
|
-
import {
|
|
10
|
+
import { Expression } from '../expression/expression.js';
|
|
11
11
|
/**
|
|
12
12
|
* This builder can be used to create a `create table` query.
|
|
13
13
|
*/
|
|
@@ -118,7 +118,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
118
118
|
* addCheckConstraint('check_legs', sql`number_of_legs < 5`)
|
|
119
119
|
* ```
|
|
120
120
|
*/
|
|
121
|
-
addCheckConstraint(constraintName: string, checkExpression:
|
|
121
|
+
addCheckConstraint(constraintName: string, checkExpression: Expression<any>): CreateTableBuilder<TB, C>;
|
|
122
122
|
/**
|
|
123
123
|
* Adds a foreign key constraint.
|
|
124
124
|
*
|
|
@@ -159,7 +159,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
159
159
|
* ```ts
|
|
160
160
|
* db.schema.createTable('person')
|
|
161
161
|
* .modifyFront(sql`global temporary`)
|
|
162
|
-
* .addColumn('id', 'integer', col => col
|
|
162
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
163
163
|
* .addColumn('first_name', 'varchar(64)', col => col.notNull())
|
|
164
164
|
* .addColumn('last_name', 'varchar(64), col => col.notNull())
|
|
165
165
|
* .execute()
|
|
@@ -175,7 +175,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
175
175
|
* )
|
|
176
176
|
* ```
|
|
177
177
|
*/
|
|
178
|
-
modifyFront(modifier:
|
|
178
|
+
modifyFront(modifier: Expression<any>): CreateTableBuilder<TB, C>;
|
|
179
179
|
/**
|
|
180
180
|
* This can be used to add any additional SQL to the end of the query.
|
|
181
181
|
*
|
|
@@ -202,7 +202,40 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
202
202
|
* ) collate utf8_unicode_ci
|
|
203
203
|
* ```
|
|
204
204
|
*/
|
|
205
|
-
modifyEnd(modifier:
|
|
205
|
+
modifyEnd(modifier: Expression<any>): CreateTableBuilder<TB, C>;
|
|
206
|
+
/**
|
|
207
|
+
* Calls the given function passing `this` as the only argument.
|
|
208
|
+
*
|
|
209
|
+
* ### Examples
|
|
210
|
+
*
|
|
211
|
+
* ```ts
|
|
212
|
+
* db.schema
|
|
213
|
+
* .createTable('test')
|
|
214
|
+
* .call((builder) => builder.addColumn('id', 'integer'))
|
|
215
|
+
* .execute()
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
218
|
+
* ```ts
|
|
219
|
+
* const addDefaultColumns = <T extends string, C extends string = never>(
|
|
220
|
+
* builder: CreateTableBuilder<T, C>
|
|
221
|
+
* ) => {
|
|
222
|
+
* return builder
|
|
223
|
+
* .addColumn('id', 'integer', (col) => col.notNull())
|
|
224
|
+
* .addColumn('created_at', 'date', (col) =>
|
|
225
|
+
* col.notNull().defaultTo(sql`now()`)
|
|
226
|
+
* )
|
|
227
|
+
* .addColumn('updated_at', 'date', (col) =>
|
|
228
|
+
* col.notNull().defaultTo(sql`now()`)
|
|
229
|
+
* )
|
|
230
|
+
* }
|
|
231
|
+
*
|
|
232
|
+
* db.schema
|
|
233
|
+
* .createTable('test')
|
|
234
|
+
* .call(addDefaultColumns)
|
|
235
|
+
* .execute()
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
call<T>(func: (qb: this) => T): T;
|
|
206
239
|
toOperationNode(): CreateTableNode;
|
|
207
240
|
compile(): CompiledQuery;
|
|
208
241
|
execute(): Promise<void>;
|