kysely 0.23.4 → 0.24.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/README.md +49 -25
- package/dist/cjs/dialect/database-introspector.d.ts +4 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.js +19 -13
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +6 -5
- package/dist/cjs/driver/runtime-driver.js +4 -2
- package/dist/cjs/expression/expression-builder.d.ts +386 -0
- package/dist/cjs/expression/expression-builder.js +92 -0
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
- package/dist/cjs/expression/expression-wrapper.js +54 -0
- package/dist/cjs/expression/expression.d.ts +1 -1
- package/dist/cjs/helpers/postgres.d.ts +133 -0
- package/dist/cjs/helpers/postgres.js +141 -0
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/kysely.d.ts +10 -0
- package/dist/cjs/kysely.js +12 -1
- package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
- package/dist/cjs/migration/migrator.d.ts +5 -2
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -2
- package/dist/cjs/operation-node/aggregate-function-node.js +2 -2
- package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
- package/dist/cjs/operation-node/delete-query-node.js +2 -8
- package/dist/cjs/operation-node/function-node.d.ts +13 -0
- package/dist/cjs/operation-node/function-node.js +19 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +11 -2
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +13 -2
- package/dist/cjs/operation-node/operator-node.js +38 -3
- package/dist/cjs/operation-node/query-node.d.ts +25 -8
- package/dist/cjs/operation-node/query-node.js +9 -2
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -6
- package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/update-query-node.js +0 -6
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
- package/dist/cjs/parser/binary-operation-parser.js +89 -39
- package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
- package/dist/cjs/parser/coalesce-parser.js +0 -9
- package/dist/cjs/parser/expression-parser.d.ts +7 -3
- package/dist/cjs/parser/expression-parser.js +4 -4
- package/dist/cjs/parser/group-by-parser.d.ts +3 -2
- package/dist/cjs/parser/group-by-parser.js +3 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
- package/dist/cjs/parser/insert-values-parser.js +19 -13
- package/dist/cjs/parser/join-parser.js +1 -1
- package/dist/cjs/parser/parse-utils.d.ts +0 -2
- package/dist/cjs/parser/parse-utils.js +1 -8
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +5 -13
- package/dist/cjs/parser/select-parser.js +8 -4
- package/dist/cjs/parser/table-parser.d.ts +6 -3
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
- package/dist/cjs/parser/unary-operation-parser.js +9 -8
- package/dist/cjs/parser/update-set-parser.d.ts +4 -1
- package/dist/cjs/parser/update-set-parser.js +9 -4
- package/dist/cjs/parser/value-parser.d.ts +5 -0
- package/dist/cjs/parser/value-parser.js +1 -3
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +7 -0
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +10 -4
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
- package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
- package/dist/cjs/query-builder/delete-query-builder.d.ts +224 -205
- package/dist/cjs/query-builder/delete-query-builder.js +21 -27
- package/dist/cjs/query-builder/delete-result.js +3 -0
- package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
- package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
- package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
- package/dist/cjs/query-builder/function-module.d.ts +304 -42
- package/dist/cjs/query-builder/function-module.js +44 -208
- package/dist/cjs/query-builder/having-interface.d.ts +19 -16
- package/dist/cjs/query-builder/insert-query-builder.d.ts +78 -30
- package/dist/cjs/query-builder/insert-query-builder.js +21 -30
- package/dist/cjs/query-builder/insert-result.js +3 -0
- package/dist/cjs/query-builder/join-builder.d.ts +23 -26
- package/dist/cjs/query-builder/join-builder.js +17 -22
- package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
- package/dist/cjs/query-builder/no-result-error.js +5 -1
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
- package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
- package/dist/cjs/query-builder/over-builder.d.ts +5 -0
- package/dist/cjs/query-builder/over-builder.js +7 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +155 -243
- package/dist/cjs/query-builder/select-query-builder.js +333 -78
- package/dist/cjs/query-builder/update-query-builder.d.ts +149 -217
- package/dist/cjs/query-builder/update-query-builder.js +21 -115
- package/dist/cjs/query-builder/update-result.js +3 -0
- package/dist/cjs/query-builder/where-interface.d.ts +71 -184
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +18 -2
- package/dist/cjs/query-creator.d.ts +38 -2
- package/dist/cjs/query-creator.js +3 -45
- package/dist/cjs/query-executor/query-executor.d.ts +3 -3
- package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
- package/dist/cjs/raw-builder/raw-builder.js +13 -7
- package/dist/cjs/raw-builder/sql.d.ts +17 -9
- package/dist/cjs/raw-builder/sql.js +8 -2
- package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-column-builder.js +7 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
- package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
- package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
- package/dist/cjs/schema/column-definition-builder.js +8 -1
- package/dist/cjs/schema/create-index-builder.d.ts +51 -9
- package/dist/cjs/schema/create-index-builder.js +17 -0
- package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
- package/dist/cjs/schema/create-schema-builder.js +7 -0
- package/dist/cjs/schema/create-table-builder.d.ts +3 -1
- package/dist/cjs/schema/create-table-builder.js +3 -1
- package/dist/cjs/schema/create-type-builder.d.ts +5 -0
- package/dist/cjs/schema/create-type-builder.js +7 -0
- package/dist/cjs/schema/create-view-builder.d.ts +5 -0
- package/dist/cjs/schema/create-view-builder.js +7 -0
- package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-index-builder.js +7 -0
- package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-schema-builder.js +7 -0
- package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-table-builder.js +7 -0
- package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-type-builder.js +7 -0
- package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-view-builder.js +7 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
- package/dist/cjs/util/compilable.d.ts +1 -0
- package/dist/cjs/util/compilable.js +6 -0
- package/dist/cjs/util/explainable.d.ts +35 -0
- package/dist/cjs/util/log.d.ts +2 -0
- package/dist/cjs/util/object-utils.js +1 -1
- package/dist/cjs/util/streamable.d.ts +29 -0
- package/dist/cjs/util/streamable.js +2 -0
- package/dist/cjs/util/type-utils.d.ts +6 -4
- package/dist/esm/dialect/database-introspector.d.ts +4 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
- package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-introspector.js +19 -13
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +3 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +6 -5
- package/dist/esm/driver/runtime-driver.js +4 -2
- package/dist/esm/expression/expression-builder.d.ts +386 -0
- package/dist/esm/expression/expression-builder.js +88 -0
- package/dist/esm/expression/expression-wrapper.d.ts +92 -0
- package/dist/esm/expression/expression-wrapper.js +50 -0
- package/dist/esm/expression/expression.d.ts +1 -1
- package/dist/esm/helpers/postgres.d.ts +133 -0
- package/dist/esm/helpers/postgres.js +136 -0
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +2 -1
- package/dist/esm/kysely.d.ts +10 -0
- package/dist/esm/kysely.js +13 -2
- package/dist/esm/migration/file-migration-provider.d.ts +5 -2
- package/dist/esm/migration/migrator.d.ts +5 -2
- package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -2
- package/dist/esm/operation-node/aggregate-function-node.js +2 -2
- package/dist/esm/operation-node/create-index-node.d.ts +2 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
- package/dist/esm/operation-node/delete-query-node.js +2 -8
- package/dist/esm/operation-node/function-node.d.ts +13 -0
- package/dist/esm/operation-node/function-node.js +17 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +11 -2
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +13 -2
- package/dist/esm/operation-node/operator-node.js +34 -3
- package/dist/esm/operation-node/query-node.d.ts +25 -8
- package/dist/esm/operation-node/query-node.js +9 -2
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -6
- package/dist/esm/operation-node/update-query-node.d.ts +0 -1
- package/dist/esm/operation-node/update-query-node.js +0 -6
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
- package/dist/esm/parser/binary-operation-parser.js +85 -37
- package/dist/esm/parser/coalesce-parser.d.ts +0 -2
- package/dist/esm/parser/coalesce-parser.js +1 -7
- package/dist/esm/parser/expression-parser.d.ts +7 -3
- package/dist/esm/parser/expression-parser.js +5 -5
- package/dist/esm/parser/group-by-parser.d.ts +3 -2
- package/dist/esm/parser/group-by-parser.js +3 -0
- package/dist/esm/parser/insert-values-parser.d.ts +4 -1
- package/dist/esm/parser/insert-values-parser.js +18 -12
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/parse-utils.d.ts +0 -2
- package/dist/esm/parser/parse-utils.js +0 -6
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +5 -13
- package/dist/esm/parser/select-parser.js +7 -3
- package/dist/esm/parser/table-parser.d.ts +6 -3
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
- package/dist/esm/parser/unary-operation-parser.js +8 -8
- package/dist/esm/parser/update-set-parser.d.ts +4 -1
- package/dist/esm/parser/update-set-parser.js +7 -2
- package/dist/esm/parser/value-parser.d.ts +5 -0
- package/dist/esm/parser/value-parser.js +1 -3
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +7 -0
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +10 -4
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
- package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
- package/dist/esm/query-builder/delete-query-builder.d.ts +224 -205
- package/dist/esm/query-builder/delete-query-builder.js +24 -30
- package/dist/esm/query-builder/delete-result.js +3 -0
- package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
- package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
- package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
- package/dist/esm/query-builder/function-module.d.ts +304 -42
- package/dist/esm/query-builder/function-module.js +43 -207
- package/dist/esm/query-builder/having-interface.d.ts +19 -16
- package/dist/esm/query-builder/insert-query-builder.d.ts +78 -30
- package/dist/esm/query-builder/insert-query-builder.js +25 -34
- package/dist/esm/query-builder/insert-result.js +3 -0
- package/dist/esm/query-builder/join-builder.d.ts +23 -26
- package/dist/esm/query-builder/join-builder.js +18 -23
- package/dist/esm/query-builder/no-result-error.d.ts +1 -0
- package/dist/esm/query-builder/no-result-error.js +3 -0
- package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
- package/dist/esm/query-builder/on-conflict-builder.js +54 -38
- package/dist/esm/query-builder/over-builder.d.ts +5 -0
- package/dist/esm/query-builder/over-builder.js +7 -0
- package/dist/esm/query-builder/returning-interface.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +155 -243
- package/dist/esm/query-builder/select-query-builder.js +337 -82
- package/dist/esm/query-builder/update-query-builder.d.ts +149 -217
- package/dist/esm/query-builder/update-query-builder.js +25 -119
- package/dist/esm/query-builder/update-result.js +3 -0
- package/dist/esm/query-builder/where-interface.d.ts +71 -184
- package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/esm/query-compiler/default-query-compiler.js +18 -2
- package/dist/esm/query-creator.d.ts +38 -2
- package/dist/esm/query-creator.js +3 -45
- package/dist/esm/query-executor/query-executor.d.ts +3 -3
- package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
- package/dist/esm/raw-builder/raw-builder.js +13 -7
- package/dist/esm/raw-builder/sql.d.ts +17 -9
- package/dist/esm/raw-builder/sql.js +8 -2
- package/dist/esm/schema/alter-column-builder.d.ts +5 -0
- package/dist/esm/schema/alter-column-builder.js +7 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
- package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
- package/dist/esm/schema/column-definition-builder.d.ts +6 -1
- package/dist/esm/schema/column-definition-builder.js +8 -1
- package/dist/esm/schema/create-index-builder.d.ts +51 -9
- package/dist/esm/schema/create-index-builder.js +17 -0
- package/dist/esm/schema/create-schema-builder.d.ts +5 -0
- package/dist/esm/schema/create-schema-builder.js +7 -0
- package/dist/esm/schema/create-table-builder.d.ts +3 -1
- package/dist/esm/schema/create-table-builder.js +3 -1
- package/dist/esm/schema/create-type-builder.d.ts +5 -0
- package/dist/esm/schema/create-type-builder.js +7 -0
- package/dist/esm/schema/create-view-builder.d.ts +5 -0
- package/dist/esm/schema/create-view-builder.js +7 -0
- package/dist/esm/schema/drop-index-builder.d.ts +5 -0
- package/dist/esm/schema/drop-index-builder.js +7 -0
- package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
- package/dist/esm/schema/drop-schema-builder.js +7 -0
- package/dist/esm/schema/drop-table-builder.d.ts +5 -0
- package/dist/esm/schema/drop-table-builder.js +7 -0
- package/dist/esm/schema/drop-type-builder.d.ts +5 -0
- package/dist/esm/schema/drop-type-builder.js +7 -0
- package/dist/esm/schema/drop-view-builder.d.ts +5 -0
- package/dist/esm/schema/drop-view-builder.js +7 -0
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
- package/dist/esm/util/compilable.d.ts +1 -0
- package/dist/esm/util/compilable.js +4 -1
- package/dist/esm/util/explainable.d.ts +35 -0
- package/dist/esm/util/log.d.ts +2 -0
- package/dist/esm/util/object-utils.js +1 -1
- package/dist/esm/util/streamable.d.ts +29 -0
- package/dist/esm/util/streamable.js +2 -0
- package/dist/esm/util/type-utils.d.ts +6 -4
- package/helpers/postgres.d.ts +1 -0
- package/helpers/postgres.js +1 -0
- package/package.json +20 -9
- package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
- package/dist/cjs/query-builder/expression-builder.js +0 -107
- package/dist/esm/query-builder/expression-builder.d.ts +0 -126
- package/dist/esm/query-builder/expression-builder.js +0 -104
|
@@ -47,7 +47,9 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
47
47
|
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
48
48
|
* .addColumn('last_name', 'varchar(255)')
|
|
49
49
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
50
|
-
*
|
|
50
|
+
* // You can specify any data type using the `sql` tag if the types
|
|
51
|
+
* // don't include it.
|
|
52
|
+
* .addColumn('data', sql`any_type_here`)
|
|
51
53
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
52
54
|
* col.references('person.id').onDelete('cascade'))
|
|
53
55
|
* )
|
|
@@ -77,7 +77,9 @@ class CreateTableBuilder {
|
|
|
77
77
|
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
78
78
|
* .addColumn('last_name', 'varchar(255)')
|
|
79
79
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
80
|
-
*
|
|
80
|
+
* // You can specify any data type using the `sql` tag if the types
|
|
81
|
+
* // don't include it.
|
|
82
|
+
* .addColumn('data', sql`any_type_here`)
|
|
81
83
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
82
84
|
* col.references('person.id').onDelete('cascade'))
|
|
83
85
|
* )
|
|
@@ -18,6 +18,11 @@ export declare class CreateTypeBuilder implements OperationNodeSource, Compilabl
|
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
20
20
|
asEnum(values: string[]): CreateTypeBuilder;
|
|
21
|
+
/**
|
|
22
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
23
|
+
* what the provided function returns.
|
|
24
|
+
*/
|
|
25
|
+
$call<T>(func: (qb: this) => T): T;
|
|
21
26
|
compile(): CompiledQuery;
|
|
22
27
|
execute(): Promise<void>;
|
|
23
28
|
}
|
|
@@ -27,6 +27,13 @@ class CreateTypeBuilder {
|
|
|
27
27
|
node: create_type_node_js_1.CreateTypeNode.cloneWithEnum(this.#props.node, values),
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
32
|
+
* what the provided function returns.
|
|
33
|
+
*/
|
|
34
|
+
$call(func) {
|
|
35
|
+
return func(this);
|
|
36
|
+
}
|
|
30
37
|
compile() {
|
|
31
38
|
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
32
39
|
}
|
|
@@ -32,6 +32,11 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
|
|
|
32
32
|
* into the query or raw expression passed to this method!
|
|
33
33
|
*/
|
|
34
34
|
as(query: AnySelectQueryBuilder | RawBuilder<any>): CreateViewBuilder;
|
|
35
|
+
/**
|
|
36
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
37
|
+
* what the provided function returns.
|
|
38
|
+
*/
|
|
39
|
+
$call<T>(func: (qb: this) => T): T;
|
|
35
40
|
toOperationNode(): CreateViewNode;
|
|
36
41
|
compile(): CompiledQuery;
|
|
37
42
|
execute(): Promise<void>;
|
|
@@ -79,6 +79,13 @@ class CreateViewBuilder {
|
|
|
79
79
|
}),
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
84
|
+
* what the provided function returns.
|
|
85
|
+
*/
|
|
86
|
+
$call(func) {
|
|
87
|
+
return func(this);
|
|
88
|
+
}
|
|
82
89
|
toOperationNode() {
|
|
83
90
|
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
84
91
|
}
|
|
@@ -14,6 +14,11 @@ export declare class DropIndexBuilder implements OperationNodeSource, Compilable
|
|
|
14
14
|
on(table: string): DropIndexBuilder;
|
|
15
15
|
ifExists(): DropIndexBuilder;
|
|
16
16
|
cascade(): DropIndexBuilder;
|
|
17
|
+
/**
|
|
18
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
19
|
+
* what the provided function returns.
|
|
20
|
+
*/
|
|
21
|
+
$call<T>(func: (qb: this) => T): T;
|
|
17
22
|
toOperationNode(): DropIndexNode;
|
|
18
23
|
compile(): CompiledQuery;
|
|
19
24
|
execute(): Promise<void>;
|
|
@@ -38,6 +38,13 @@ class DropIndexBuilder {
|
|
|
38
38
|
}),
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
43
|
+
* what the provided function returns.
|
|
44
|
+
*/
|
|
45
|
+
$call(func) {
|
|
46
|
+
return func(this);
|
|
47
|
+
}
|
|
41
48
|
toOperationNode() {
|
|
42
49
|
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
43
50
|
}
|
|
@@ -9,6 +9,11 @@ export declare class DropSchemaBuilder implements OperationNodeSource, Compilabl
|
|
|
9
9
|
constructor(props: DropSchemaBuilderProps);
|
|
10
10
|
ifExists(): DropSchemaBuilder;
|
|
11
11
|
cascade(): DropSchemaBuilder;
|
|
12
|
+
/**
|
|
13
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
14
|
+
* what the provided function returns.
|
|
15
|
+
*/
|
|
16
|
+
$call<T>(func: (qb: this) => T): T;
|
|
12
17
|
toOperationNode(): DropSchemaNode;
|
|
13
18
|
compile(): CompiledQuery;
|
|
14
19
|
execute(): Promise<void>;
|
|
@@ -25,6 +25,13 @@ class DropSchemaBuilder {
|
|
|
25
25
|
}),
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
30
|
+
* what the provided function returns.
|
|
31
|
+
*/
|
|
32
|
+
$call(func) {
|
|
33
|
+
return func(this);
|
|
34
|
+
}
|
|
28
35
|
toOperationNode() {
|
|
29
36
|
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
30
37
|
}
|
|
@@ -9,6 +9,11 @@ export declare class DropTableBuilder implements OperationNodeSource, Compilable
|
|
|
9
9
|
constructor(props: DropTableBuilderProps);
|
|
10
10
|
ifExists(): DropTableBuilder;
|
|
11
11
|
cascade(): DropTableBuilder;
|
|
12
|
+
/**
|
|
13
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
14
|
+
* what the provided function returns.
|
|
15
|
+
*/
|
|
16
|
+
$call<T>(func: (qb: this) => T): T;
|
|
12
17
|
toOperationNode(): DropTableNode;
|
|
13
18
|
compile(): CompiledQuery;
|
|
14
19
|
execute(): Promise<void>;
|
|
@@ -25,6 +25,13 @@ class DropTableBuilder {
|
|
|
25
25
|
}),
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
30
|
+
* what the provided function returns.
|
|
31
|
+
*/
|
|
32
|
+
$call(func) {
|
|
33
|
+
return func(this);
|
|
34
|
+
}
|
|
28
35
|
toOperationNode() {
|
|
29
36
|
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
30
37
|
}
|
|
@@ -8,6 +8,11 @@ export declare class DropTypeBuilder implements OperationNodeSource, Compilable
|
|
|
8
8
|
#private;
|
|
9
9
|
constructor(props: DropTypeBuilderProps);
|
|
10
10
|
ifExists(): DropTypeBuilder;
|
|
11
|
+
/**
|
|
12
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
13
|
+
* what the provided function returns.
|
|
14
|
+
*/
|
|
15
|
+
$call<T>(func: (qb: this) => T): T;
|
|
11
16
|
toOperationNode(): DropTypeNode;
|
|
12
17
|
compile(): CompiledQuery;
|
|
13
18
|
execute(): Promise<void>;
|
|
@@ -17,6 +17,13 @@ class DropTypeBuilder {
|
|
|
17
17
|
}),
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
22
|
+
* what the provided function returns.
|
|
23
|
+
*/
|
|
24
|
+
$call(func) {
|
|
25
|
+
return func(this);
|
|
26
|
+
}
|
|
20
27
|
toOperationNode() {
|
|
21
28
|
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
22
29
|
}
|
|
@@ -10,6 +10,11 @@ export declare class DropViewBuilder implements OperationNodeSource, Compilable
|
|
|
10
10
|
materialized(): DropViewBuilder;
|
|
11
11
|
ifExists(): DropViewBuilder;
|
|
12
12
|
cascade(): DropViewBuilder;
|
|
13
|
+
/**
|
|
14
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
15
|
+
* what the provided function returns.
|
|
16
|
+
*/
|
|
17
|
+
$call<T>(func: (qb: this) => T): T;
|
|
13
18
|
toOperationNode(): DropViewNode;
|
|
14
19
|
compile(): CompiledQuery;
|
|
15
20
|
execute(): Promise<void>;
|
|
@@ -33,6 +33,13 @@ class DropViewBuilder {
|
|
|
33
33
|
}),
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
38
|
+
* what the provided function returns.
|
|
39
|
+
*/
|
|
40
|
+
$call(func) {
|
|
41
|
+
return func(this);
|
|
42
|
+
}
|
|
36
43
|
toOperationNode() {
|
|
37
44
|
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
38
45
|
}
|
|
@@ -10,5 +10,10 @@ export declare class ForeignKeyConstraintBuilder implements ForeignKeyConstraint
|
|
|
10
10
|
constructor(node: ForeignKeyConstraintNode);
|
|
11
11
|
onDelete(onDelete: OnModifyForeignAction): ForeignKeyConstraintBuilder;
|
|
12
12
|
onUpdate(onUpdate: OnModifyForeignAction): ForeignKeyConstraintBuilder;
|
|
13
|
+
/**
|
|
14
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
15
|
+
* what the provided function returns.
|
|
16
|
+
*/
|
|
17
|
+
$call<T>(func: (qb: this) => T): T;
|
|
13
18
|
toOperationNode(): ForeignKeyConstraintNode;
|
|
14
19
|
}
|
|
@@ -19,6 +19,13 @@ class ForeignKeyConstraintBuilder {
|
|
|
19
19
|
onUpdate: (0, on_modify_action_parser_js_1.parseOnModifyForeignAction)(onUpdate),
|
|
20
20
|
}));
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
24
|
+
* what the provided function returns.
|
|
25
|
+
*/
|
|
26
|
+
$call(func) {
|
|
27
|
+
return func(this);
|
|
28
|
+
}
|
|
22
29
|
toOperationNode() {
|
|
23
30
|
return this.#node;
|
|
24
31
|
}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isCompilable = void 0;
|
|
4
|
+
const object_utils_js_1 = require("./object-utils.js");
|
|
5
|
+
function isCompilable(value) {
|
|
6
|
+
return (0, object_utils_js_1.isObject)(value) && (0, object_utils_js_1.isFunction)(value.compile);
|
|
7
|
+
}
|
|
8
|
+
exports.isCompilable = isCompilable;
|
|
@@ -1,5 +1,40 @@
|
|
|
1
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
|
+
/**
|
|
5
|
+
* Executes query with `explain` statement before the main query.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* const explained = await db
|
|
9
|
+
* .selectFrom('person')
|
|
10
|
+
* .where('gender', '=', 'female')
|
|
11
|
+
* .selectAll()
|
|
12
|
+
* .explain('json')
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* The generated SQL (MySQL):
|
|
16
|
+
*
|
|
17
|
+
* ```sql
|
|
18
|
+
* explain format=json select * from `person` where `gender` = ?
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* You can also execute `explain analyze` statements.
|
|
22
|
+
*
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { sql } from 'kysely'
|
|
25
|
+
*
|
|
26
|
+
* const explained = await db
|
|
27
|
+
* .selectFrom('person')
|
|
28
|
+
* .where('gender', '=', 'female')
|
|
29
|
+
* .selectAll()
|
|
30
|
+
* .explain('json', sql`analyze`)
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* The generated SQL (PostgreSQL):
|
|
34
|
+
*
|
|
35
|
+
* ```sql
|
|
36
|
+
* explain (analyze, format json) select * from "person" where "gender" = $1
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
4
39
|
explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<O[]>;
|
|
5
40
|
}
|
package/dist/cjs/util/log.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export interface QueryLogEvent {
|
|
|
10
10
|
export interface ErrorLogEvent {
|
|
11
11
|
readonly level: 'error';
|
|
12
12
|
readonly error: unknown;
|
|
13
|
+
readonly query: CompiledQuery;
|
|
14
|
+
readonly queryDurationMillis: number;
|
|
13
15
|
}
|
|
14
16
|
export declare type LogEvent = QueryLogEvent | ErrorLogEvent;
|
|
15
17
|
export declare type Logger = (event: LogEvent) => void;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface Streamable<O> {
|
|
2
|
+
/**
|
|
3
|
+
* Executes the query and streams the rows.
|
|
4
|
+
*
|
|
5
|
+
* The optional argument `chunkSize` defines how many rows to fetch from the database
|
|
6
|
+
* at a time. It only affects some dialects like PostgreSQL that support it.
|
|
7
|
+
*
|
|
8
|
+
* ### Examples
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const stream = db.
|
|
12
|
+
* .selectFrom('person')
|
|
13
|
+
* .select(['first_name', 'last_name'])
|
|
14
|
+
* .where('gender', '=', 'other')
|
|
15
|
+
* .stream()
|
|
16
|
+
*
|
|
17
|
+
* for await (const person of stream) {
|
|
18
|
+
* console.log(person.first_name)
|
|
19
|
+
*
|
|
20
|
+
* if (person.last_name === 'Something') {
|
|
21
|
+
* // Breaking or returning before the stream has ended will release
|
|
22
|
+
* // the database connection and invalidate the stream.
|
|
23
|
+
* break
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
stream(chunkSize?: number): AsyncIterableIterator<O>;
|
|
29
|
+
}
|
|
@@ -100,10 +100,11 @@ export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : ne
|
|
|
100
100
|
* Any select query builder.
|
|
101
101
|
*/
|
|
102
102
|
export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
export declare type SimplifySingleResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O> | undefined;
|
|
104
|
+
export declare type SimplifyResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O>;
|
|
105
|
+
export declare type Simplify<T> = {
|
|
106
|
+
[K in keyof T]: T[K];
|
|
107
|
+
} & {};
|
|
107
108
|
/**
|
|
108
109
|
* Represents a database row whose column names and their types are unknown.
|
|
109
110
|
*/
|
|
@@ -143,3 +144,4 @@ export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
|
143
144
|
* Evaluates to `true` if the types `T` and `U` are equal.
|
|
144
145
|
*/
|
|
145
146
|
export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
|
|
147
|
+
export declare type SqlBool = boolean | 0 | 1;
|
|
@@ -7,7 +7,7 @@ export interface DatabaseIntrospector {
|
|
|
7
7
|
*/
|
|
8
8
|
getSchemas(): Promise<SchemaMetadata[]>;
|
|
9
9
|
/**
|
|
10
|
-
* Get
|
|
10
|
+
* Get tables and views metadata.
|
|
11
11
|
*/
|
|
12
12
|
getTables(options?: DatabaseMetadataOptions): Promise<TableMetadata[]>;
|
|
13
13
|
/**
|
|
@@ -29,12 +29,14 @@ export interface SchemaMetadata {
|
|
|
29
29
|
}
|
|
30
30
|
export interface DatabaseMetadata {
|
|
31
31
|
/**
|
|
32
|
-
* The tables found in the database.
|
|
32
|
+
* The tables and views found in the database.
|
|
33
|
+
* * The propery isView can be used to tell them apart.
|
|
33
34
|
*/
|
|
34
35
|
readonly tables: TableMetadata[];
|
|
35
36
|
}
|
|
36
37
|
export interface TableMetadata {
|
|
37
38
|
readonly name: string;
|
|
39
|
+
readonly isView: boolean;
|
|
38
40
|
readonly columns: ColumnMetadata[];
|
|
39
41
|
readonly schema?: string;
|
|
40
42
|
}
|
|
@@ -17,9 +17,9 @@ export class MysqlAdapter extends DialectAdapterBase {
|
|
|
17
17
|
// is released using `release_lock`. This way we know that the lock is either
|
|
18
18
|
// released by us after successfull or failed migrations OR it's released by
|
|
19
19
|
// MySQL if the process gets killed for some reason.
|
|
20
|
-
await sql `select get_lock(${sql.
|
|
20
|
+
await sql `select get_lock(${sql.lit(LOCK_ID)}, ${sql.lit(LOCK_TIMEOUT_SECONDS)})`.execute(db);
|
|
21
21
|
}
|
|
22
22
|
async releaseMigrationLock(db) {
|
|
23
|
-
await sql `select release_lock(${sql.
|
|
23
|
+
await sql `select release_lock(${sql.lit(LOCK_ID)})`.execute(db);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -42,7 +42,7 @@ declare class MysqlConnection implements DatabaseConnection {
|
|
|
42
42
|
#private;
|
|
43
43
|
constructor(rawConnection: MysqlPoolConnection);
|
|
44
44
|
executeQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>>;
|
|
45
|
-
streamQuery<O>(compiledQuery: CompiledQuery,
|
|
45
|
+
streamQuery<O>(compiledQuery: CompiledQuery, _chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
|
|
46
46
|
[PRIVATE_RELEASE_METHOD](): void;
|
|
47
47
|
}
|
|
48
48
|
export {};
|
|
@@ -124,7 +124,7 @@ class MysqlConnection {
|
|
|
124
124
|
});
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
|
-
async *streamQuery(compiledQuery,
|
|
127
|
+
async *streamQuery(compiledQuery, _chunkSize) {
|
|
128
128
|
const stream = this.#rawConnection
|
|
129
129
|
.query(compiledQuery.sql, compiledQuery.parameters)
|
|
130
130
|
.stream({
|
|
@@ -8,7 +8,7 @@ export declare class MysqlIntrospector implements DatabaseIntrospector {
|
|
|
8
8
|
*/
|
|
9
9
|
getSchemas(): Promise<SchemaMetadata[]>;
|
|
10
10
|
/**
|
|
11
|
-
* Get
|
|
11
|
+
* Get tables and views metadata.
|
|
12
12
|
*/
|
|
13
13
|
getTables(options?: DatabaseMetadataOptions): Promise<TableMetadata[]>;
|
|
14
14
|
/**
|
|
@@ -17,24 +17,29 @@ export class MysqlIntrospector {
|
|
|
17
17
|
}
|
|
18
18
|
async getTables(options = { withInternalKyselyTables: false }) {
|
|
19
19
|
let query = this.#db
|
|
20
|
-
.selectFrom('information_schema.columns')
|
|
20
|
+
.selectFrom('information_schema.columns as columns')
|
|
21
|
+
.innerJoin('information_schema.tables as tables', (b) => b
|
|
22
|
+
.onRef('columns.TABLE_CATALOG', '=', 'tables.TABLE_CATALOG')
|
|
23
|
+
.onRef('columns.TABLE_SCHEMA', '=', 'tables.TABLE_SCHEMA')
|
|
24
|
+
.onRef('columns.TABLE_NAME', '=', 'tables.TABLE_NAME'))
|
|
21
25
|
.select([
|
|
22
|
-
'COLUMN_NAME',
|
|
23
|
-
'COLUMN_DEFAULT',
|
|
24
|
-
'TABLE_NAME',
|
|
25
|
-
'TABLE_SCHEMA',
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
26
|
+
'columns.COLUMN_NAME',
|
|
27
|
+
'columns.COLUMN_DEFAULT',
|
|
28
|
+
'columns.TABLE_NAME',
|
|
29
|
+
'columns.TABLE_SCHEMA',
|
|
30
|
+
'tables.TABLE_TYPE',
|
|
31
|
+
'columns.IS_NULLABLE',
|
|
32
|
+
'columns.DATA_TYPE',
|
|
33
|
+
'columns.EXTRA',
|
|
29
34
|
])
|
|
30
|
-
.where('
|
|
31
|
-
.orderBy('
|
|
32
|
-
.orderBy('
|
|
35
|
+
.where('columns.TABLE_SCHEMA', '=', sql `database()`)
|
|
36
|
+
.orderBy('columns.TABLE_NAME')
|
|
37
|
+
.orderBy('columns.ORDINAL_POSITION')
|
|
33
38
|
.$castTo();
|
|
34
39
|
if (!options.withInternalKyselyTables) {
|
|
35
40
|
query = query
|
|
36
|
-
.where('
|
|
37
|
-
.where('
|
|
41
|
+
.where('columns.TABLE_NAME', '!=', DEFAULT_MIGRATION_TABLE)
|
|
42
|
+
.where('columns.TABLE_NAME', '!=', DEFAULT_MIGRATION_LOCK_TABLE);
|
|
38
43
|
}
|
|
39
44
|
const rawColumns = await query.execute();
|
|
40
45
|
return this.#parseTableMetadata(rawColumns);
|
|
@@ -50,6 +55,7 @@ export class MysqlIntrospector {
|
|
|
50
55
|
if (!table) {
|
|
51
56
|
table = freeze({
|
|
52
57
|
name: it.TABLE_NAME,
|
|
58
|
+
isView: it.TABLE_TYPE === 'VIEW',
|
|
53
59
|
schema: it.TABLE_SCHEMA,
|
|
54
60
|
columns: [],
|
|
55
61
|
});
|
|
@@ -12,7 +12,7 @@ export class PostgresAdapter extends DialectAdapterBase {
|
|
|
12
12
|
}
|
|
13
13
|
async acquireMigrationLock(db) {
|
|
14
14
|
// Acquire a transaction level advisory lock.
|
|
15
|
-
await sql `select pg_advisory_xact_lock(${sql.
|
|
15
|
+
await sql `select pg_advisory_xact_lock(${sql.lit(LOCK_ID)})`.execute(db);
|
|
16
16
|
}
|
|
17
17
|
async releaseMigrationLock() {
|
|
18
18
|
// Nothing to do here. `pg_advisory_xact_lock` is automatically released at the
|
|
@@ -8,7 +8,7 @@ export declare class PostgresIntrospector implements DatabaseIntrospector {
|
|
|
8
8
|
*/
|
|
9
9
|
getSchemas(): Promise<SchemaMetadata[]>;
|
|
10
10
|
/**
|
|
11
|
-
* Get
|
|
11
|
+
* Get tables and views metadata.
|
|
12
12
|
*/
|
|
13
13
|
getTables(options?: DatabaseMetadataOptions): Promise<TableMetadata[]>;
|
|
14
14
|
/**
|
|
@@ -32,6 +32,7 @@ export class PostgresIntrospector {
|
|
|
32
32
|
'a.attnotnull as not_null',
|
|
33
33
|
'a.atthasdef as has_default',
|
|
34
34
|
'c.relname as table',
|
|
35
|
+
'c.relkind as table_type',
|
|
35
36
|
'ns.nspname as schema',
|
|
36
37
|
'typ.typname as type',
|
|
37
38
|
'dtns.nspname as type_schema',
|
|
@@ -47,7 +48,7 @@ export class PostgresIntrospector {
|
|
|
47
48
|
.as('auto_incrementing'),
|
|
48
49
|
])
|
|
49
50
|
// r == normal table
|
|
50
|
-
.where('c.relkind', '
|
|
51
|
+
.where('c.relkind', 'in', ['r', 'v'])
|
|
51
52
|
.where('ns.nspname', '!~', '^pg_')
|
|
52
53
|
.where('ns.nspname', '!=', 'information_schema')
|
|
53
54
|
// No system columns
|
|
@@ -76,6 +77,7 @@ export class PostgresIntrospector {
|
|
|
76
77
|
if (!table) {
|
|
77
78
|
table = freeze({
|
|
78
79
|
name: it.table,
|
|
80
|
+
isView: it.table_type === 'v',
|
|
79
81
|
schema: it.schema,
|
|
80
82
|
columns: [],
|
|
81
83
|
});
|
|
@@ -8,7 +8,7 @@ export declare class SqliteIntrospector implements DatabaseIntrospector {
|
|
|
8
8
|
*/
|
|
9
9
|
getSchemas(): Promise<SchemaMetadata[]>;
|
|
10
10
|
/**
|
|
11
|
-
* Get
|
|
11
|
+
* Get tables and views metadata.
|
|
12
12
|
*/
|
|
13
13
|
getTables(options?: DatabaseMetadataOptions): Promise<TableMetadata[]>;
|
|
14
14
|
/**
|
|
@@ -13,7 +13,7 @@ export class SqliteIntrospector {
|
|
|
13
13
|
async getTables(options = { withInternalKyselyTables: false }) {
|
|
14
14
|
let query = this.#db
|
|
15
15
|
.selectFrom('sqlite_schema')
|
|
16
|
-
.where('type', '
|
|
16
|
+
.where('type', 'in', ['table', 'view'])
|
|
17
17
|
.where('name', 'not like', 'sqlite_%')
|
|
18
18
|
.select('name')
|
|
19
19
|
.orderBy('name')
|
|
@@ -34,14 +34,14 @@ export class SqliteIntrospector {
|
|
|
34
34
|
async #getTableMetadata(table) {
|
|
35
35
|
const db = this.#db;
|
|
36
36
|
// Get the SQL that was used to create the table.
|
|
37
|
-
const
|
|
37
|
+
const tableDefinition = await db
|
|
38
38
|
.selectFrom('sqlite_master')
|
|
39
39
|
.where('name', '=', table)
|
|
40
|
-
.select('sql')
|
|
40
|
+
.select(['sql', 'type'])
|
|
41
41
|
.$castTo()
|
|
42
|
-
.
|
|
42
|
+
.executeTakeFirstOrThrow();
|
|
43
43
|
// Try to find the name of the column that has `autoincrement` 🤦
|
|
44
|
-
const autoIncrementCol =
|
|
44
|
+
const autoIncrementCol = tableDefinition.sql
|
|
45
45
|
?.split(/[\(\),]/)
|
|
46
46
|
?.find((it) => it.toLowerCase().includes('autoincrement'))
|
|
47
47
|
?.trimStart()
|
|
@@ -54,6 +54,7 @@ export class SqliteIntrospector {
|
|
|
54
54
|
.execute();
|
|
55
55
|
return {
|
|
56
56
|
name: table,
|
|
57
|
+
isView: tableDefinition.type === 'view',
|
|
57
58
|
columns: columns.map((col) => ({
|
|
58
59
|
name: col.name,
|
|
59
60
|
dataType: col.type,
|
|
@@ -74,7 +74,7 @@ export class RuntimeDriver {
|
|
|
74
74
|
return await executeQuery.call(connection, compiledQuery);
|
|
75
75
|
}
|
|
76
76
|
catch (error) {
|
|
77
|
-
this.#logError(error);
|
|
77
|
+
this.#logError(error, compiledQuery, startTime);
|
|
78
78
|
throw error;
|
|
79
79
|
}
|
|
80
80
|
finally {
|
|
@@ -82,10 +82,12 @@ export class RuntimeDriver {
|
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
|
-
#logError(error) {
|
|
85
|
+
#logError(error, compiledQuery, startTime) {
|
|
86
86
|
this.#log.error(() => ({
|
|
87
87
|
level: 'error',
|
|
88
88
|
error,
|
|
89
|
+
query: compiledQuery,
|
|
90
|
+
queryDurationMillis: this.#calculateDurationMillis(startTime),
|
|
89
91
|
}));
|
|
90
92
|
}
|
|
91
93
|
#logQuery(compiledQuery, startTime) {
|