kysely 0.9.8 → 0.11.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 +22 -16
- package/dist/cjs/dialect/dialect-adapter.d.ts +3 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/cjs/dialect/mysql/mysql-driver.js +25 -32
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/cjs/dialect/postgres/postgres-driver.js +8 -19
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +18 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +33 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +116 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +31 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +19 -0
- package/dist/cjs/driver/database-connection.d.ts +2 -2
- package/dist/cjs/driver/runtime-driver.js +3 -4
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/kysely.d.ts +6 -4
- package/dist/cjs/kysely.js +6 -4
- package/dist/cjs/migration/migration.d.ts +1 -1
- package/dist/cjs/migration/migration.js +3 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
- package/dist/cjs/operation-node/column-definition-node.js +4 -4
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-table-node.js +2 -2
- package/dist/cjs/operation-node/create-view-node.d.ts +23 -0
- package/dist/cjs/operation-node/create-view-node.js +25 -0
- package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
- package/dist/cjs/operation-node/default-value-node.js +18 -0
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-schema-node.js +3 -3
- package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-table-node.js +2 -2
- package/dist/cjs/operation-node/drop-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/drop-view-node.js +25 -0
- package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
- package/dist/cjs/operation-node/having-node.d.ts +4 -8
- package/dist/cjs/operation-node/having-node.js +3 -3
- package/dist/cjs/operation-node/join-node.d.ts +6 -9
- package/dist/cjs/operation-node/join-node.js +10 -7
- package/dist/cjs/operation-node/on-node.d.ts +14 -0
- package/dist/cjs/operation-node/on-node.js +28 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +55 -11
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +11 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +11 -2
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +3 -3
- package/dist/cjs/operation-node/raw-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
- package/dist/cjs/operation-node/select-query-node.js +1 -1
- package/dist/cjs/operation-node/where-node.d.ts +4 -8
- package/dist/cjs/operation-node/where-node.js +3 -3
- package/dist/cjs/parser/filter-parser.js +1 -1
- package/dist/cjs/parser/returning-parser.d.ts +4 -2
- package/dist/cjs/parser/select-parser.d.ts +2 -2
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +22 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.js +21 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +6 -0
- package/dist/cjs/query-builder/delete-result.d.ts +5 -0
- package/dist/cjs/query-builder/delete-result.js +13 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +2 -2
- package/dist/cjs/query-builder/expression-builder.js +1 -1
- package/dist/cjs/query-builder/function-builder.d.ts +5 -5
- package/dist/cjs/query-builder/function-builder.js +3 -3
- package/dist/cjs/query-builder/insert-result.d.ts +27 -0
- package/dist/cjs/query-builder/insert-result.js +35 -0
- package/dist/cjs/query-builder/query-builder.d.ts +91 -81
- package/dist/cjs/query-builder/query-builder.js +38 -41
- package/dist/cjs/query-builder/update-result.d.ts +5 -0
- package/dist/cjs/query-builder/update-result.js +13 -0
- package/dist/cjs/query-compiler/compiled-query.d.ts +5 -0
- package/dist/cjs/query-compiler/compiled-query.js +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +82 -23
- package/dist/cjs/query-compiler/query-compiler.d.ts +3 -1
- package/dist/cjs/query-creator.d.ts +36 -26
- package/dist/cjs/query-creator.js +25 -17
- package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
- package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
- package/dist/cjs/schema/alter-table-builder.js +28 -4
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
- package/dist/cjs/schema/column-definition-builder.js +23 -6
- package/dist/cjs/schema/create-schema-builder.js +1 -1
- package/dist/cjs/schema/create-table-builder.d.ts +7 -8
- package/dist/cjs/schema/create-table-builder.js +8 -9
- package/dist/cjs/schema/create-view-builder.d.ts +28 -0
- package/dist/cjs/schema/create-view-builder.js +84 -0
- package/dist/cjs/schema/drop-index-builder.js +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +3 -1
- package/dist/cjs/schema/drop-table-builder.js +3 -1
- package/dist/cjs/schema/drop-view-builder.d.ts +20 -0
- package/dist/cjs/schema/drop-view-builder.js +39 -0
- package/dist/cjs/schema/schema.d.ts +30 -3
- package/dist/cjs/schema/schema.js +44 -3
- package/dist/cjs/util/dynamic-import.d.ts +2 -0
- package/dist/cjs/util/dynamic-import.js +32 -0
- package/dist/cjs/util/performance-now.d.ts +1 -0
- package/dist/cjs/util/performance-now.js +13 -0
- package/dist/cjs/util/type-utils.d.ts +4 -15
- package/dist/esm/dialect/dialect-adapter.d.ts +3 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/esm/dialect/mysql/mysql-driver.js +26 -33
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/esm/dialect/postgres/postgres-driver.js +8 -19
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +14 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +29 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +112 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +27 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +15 -0
- package/dist/esm/driver/database-connection.d.ts +2 -2
- package/dist/esm/driver/runtime-driver.js +3 -4
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/kysely.d.ts +6 -4
- package/dist/esm/kysely.js +6 -4
- package/dist/esm/migration/migration.d.ts +1 -1
- package/dist/esm/migration/migration.js +3 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
- package/dist/esm/operation-node/column-definition-node.js +4 -4
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
- package/dist/esm/operation-node/create-table-node.d.ts +2 -3
- package/dist/esm/operation-node/create-table-node.js +2 -2
- package/dist/esm/operation-node/create-view-node.d.ts +23 -0
- package/dist/esm/operation-node/create-view-node.js +22 -0
- package/dist/esm/operation-node/default-value-node.d.ts +14 -0
- package/dist/esm/operation-node/default-value-node.js +15 -0
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-schema-node.js +3 -3
- package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-table-node.js +2 -2
- package/dist/esm/operation-node/drop-view-node.d.ts +17 -0
- package/dist/esm/operation-node/drop-view-node.js +22 -0
- package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/esm/operation-node/generated-always-as-node.js +22 -0
- package/dist/esm/operation-node/having-node.d.ts +4 -8
- package/dist/esm/operation-node/having-node.js +3 -3
- package/dist/esm/operation-node/join-node.d.ts +6 -9
- package/dist/esm/operation-node/join-node.js +10 -7
- package/dist/esm/operation-node/on-node.d.ts +14 -0
- package/dist/esm/operation-node/on-node.js +25 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-transformer.js +55 -11
- package/dist/esm/operation-node/operation-node-visitor.d.ts +11 -0
- package/dist/esm/operation-node/operation-node-visitor.js +11 -2
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +3 -3
- package/dist/esm/operation-node/raw-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -5
- package/dist/esm/operation-node/select-query-node.js +1 -1
- package/dist/esm/operation-node/where-node.d.ts +4 -8
- package/dist/esm/operation-node/where-node.js +3 -3
- package/dist/esm/parser/filter-parser.js +1 -1
- package/dist/esm/parser/returning-parser.d.ts +4 -2
- package/dist/esm/parser/select-parser.d.ts +2 -2
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +18 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +17 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +6 -0
- package/dist/esm/query-builder/delete-result.d.ts +5 -0
- package/dist/esm/query-builder/delete-result.js +9 -0
- package/dist/esm/query-builder/expression-builder.d.ts +2 -2
- package/dist/esm/query-builder/expression-builder.js +1 -1
- package/dist/esm/query-builder/function-builder.d.ts +5 -5
- package/dist/esm/query-builder/function-builder.js +3 -3
- package/dist/esm/query-builder/insert-result.d.ts +27 -0
- package/dist/esm/query-builder/insert-result.js +31 -0
- package/dist/esm/query-builder/query-builder.d.ts +91 -81
- package/dist/esm/query-builder/query-builder.js +38 -41
- package/dist/esm/query-builder/update-result.d.ts +5 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-compiler/compiled-query.d.ts +5 -0
- package/dist/esm/query-compiler/compiled-query.js +11 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/esm/query-compiler/default-query-compiler.js +82 -23
- package/dist/esm/query-compiler/query-compiler.d.ts +3 -1
- package/dist/esm/query-creator.d.ts +36 -26
- package/dist/esm/query-creator.js +25 -17
- package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
- package/dist/esm/schema/alter-table-builder.d.ts +6 -2
- package/dist/esm/schema/alter-table-builder.js +28 -4
- package/dist/esm/schema/column-definition-builder.d.ts +43 -2
- package/dist/esm/schema/column-definition-builder.js +23 -6
- package/dist/esm/schema/create-schema-builder.js +1 -1
- package/dist/esm/schema/create-table-builder.d.ts +7 -8
- package/dist/esm/schema/create-table-builder.js +8 -9
- package/dist/esm/schema/create-view-builder.d.ts +28 -0
- package/dist/esm/schema/create-view-builder.js +80 -0
- package/dist/esm/schema/drop-index-builder.js +1 -1
- package/dist/esm/schema/drop-schema-builder.js +3 -1
- package/dist/esm/schema/drop-table-builder.js +3 -1
- package/dist/esm/schema/drop-view-builder.d.ts +20 -0
- package/dist/esm/schema/drop-view-builder.js +35 -0
- package/dist/esm/schema/schema.d.ts +30 -3
- package/dist/esm/schema/schema.js +44 -3
- package/dist/esm/util/dynamic-import.d.ts +2 -0
- package/dist/esm/util/dynamic-import.js +27 -0
- package/dist/esm/util/performance-now.d.ts +1 -0
- package/dist/esm/util/performance-now.js +9 -0
- package/dist/esm/util/type-utils.d.ts +4 -15
- package/package.json +5 -3
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
|
+
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
|
+
import { Compilable } from '../util/compilable.js';
|
|
4
|
+
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
5
|
+
import { QueryId } from '../util/query-id.js';
|
|
6
|
+
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|
7
|
+
import { AnyQueryBuilder } from '../index.js';
|
|
8
|
+
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
9
|
+
export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(props: CreateViewBuilderProps);
|
|
12
|
+
materialized(): CreateViewBuilder;
|
|
13
|
+
/**
|
|
14
|
+
* Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.
|
|
15
|
+
*/
|
|
16
|
+
ifNotExists(): CreateViewBuilder;
|
|
17
|
+
orReplace(): CreateViewBuilder;
|
|
18
|
+
columns(columns: string[]): CreateViewBuilder;
|
|
19
|
+
as(query: AnyQueryBuilder | AnyRawBuilder): CreateViewBuilder;
|
|
20
|
+
toOperationNode(): CreateViewNode;
|
|
21
|
+
compile(): CompiledQuery;
|
|
22
|
+
execute(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export interface CreateViewBuilderProps {
|
|
25
|
+
readonly queryId: QueryId;
|
|
26
|
+
readonly executor: QueryExecutor;
|
|
27
|
+
readonly createViewNode: CreateViewNode;
|
|
28
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateViewBuilder = void 0;
|
|
4
|
+
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
5
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
|
+
const create_view_node_js_1 = require("../operation-node/create-view-node.js");
|
|
7
|
+
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
8
|
+
const index_js_1 = require("../index.js");
|
|
9
|
+
const immediate_value_plugin_js_1 = require("../plugin/immediate-value.ts/immediate-value-plugin.js");
|
|
10
|
+
class CreateViewBuilder {
|
|
11
|
+
#props;
|
|
12
|
+
constructor(props) {
|
|
13
|
+
this.#props = (0, object_utils_js_1.freeze)({
|
|
14
|
+
...props,
|
|
15
|
+
// The select statement (defined using the `as` method) can't have parameters on some
|
|
16
|
+
// dialects. We add the `ImmediateValuePlugin` to make all parameters "immediate"
|
|
17
|
+
// meaning they are interpolated into the SQL instead of added as parameters.
|
|
18
|
+
//
|
|
19
|
+
// The values are therefore not escaped at all, which leads to SQL injection
|
|
20
|
+
// vulnerabilities if user input is passed into the query. However, the use
|
|
21
|
+
// case where user input is passed into a `create view` statement is a weird
|
|
22
|
+
// one, and we can pretty safely just ignore it.
|
|
23
|
+
executor: props.executor.withPlugin(new immediate_value_plugin_js_1.ImmediateValuePlugin()),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
materialized() {
|
|
27
|
+
return new CreateViewBuilder({
|
|
28
|
+
...this.#props,
|
|
29
|
+
createViewNode: create_view_node_js_1.CreateViewNode.cloneWith(this.#props.createViewNode, {
|
|
30
|
+
materialized: true,
|
|
31
|
+
}),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.
|
|
36
|
+
*/
|
|
37
|
+
ifNotExists() {
|
|
38
|
+
return new CreateViewBuilder({
|
|
39
|
+
...this.#props,
|
|
40
|
+
createViewNode: create_view_node_js_1.CreateViewNode.cloneWith(this.#props.createViewNode, {
|
|
41
|
+
ifNotExists: true,
|
|
42
|
+
}),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
orReplace() {
|
|
46
|
+
return new CreateViewBuilder({
|
|
47
|
+
...this.#props,
|
|
48
|
+
createViewNode: create_view_node_js_1.CreateViewNode.cloneWith(this.#props.createViewNode, {
|
|
49
|
+
orReplace: true,
|
|
50
|
+
}),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
columns(columns) {
|
|
54
|
+
return new CreateViewBuilder({
|
|
55
|
+
...this.#props,
|
|
56
|
+
createViewNode: create_view_node_js_1.CreateViewNode.cloneWith(this.#props.createViewNode, {
|
|
57
|
+
columns: columns.map(reference_parser_js_1.parseColumnName),
|
|
58
|
+
}),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
as(query) {
|
|
62
|
+
const queryNode = query.toOperationNode();
|
|
63
|
+
if (index_js_1.QueryNode.isMutating(queryNode)) {
|
|
64
|
+
throw new Error('only select statements are allowd in views');
|
|
65
|
+
}
|
|
66
|
+
return new CreateViewBuilder({
|
|
67
|
+
...this.#props,
|
|
68
|
+
createViewNode: create_view_node_js_1.CreateViewNode.cloneWith(this.#props.createViewNode, {
|
|
69
|
+
as: queryNode,
|
|
70
|
+
}),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
toOperationNode() {
|
|
74
|
+
return this.#props.executor.transformQuery(this.#props.createViewNode, this.#props.queryId);
|
|
75
|
+
}
|
|
76
|
+
compile() {
|
|
77
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
78
|
+
}
|
|
79
|
+
async execute() {
|
|
80
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.CreateViewBuilder = CreateViewBuilder;
|
|
84
|
+
(0, prevent_await_js_1.preventAwait)(CreateViewBuilder, "don't await CreateViewBuilder instances directly. To execute the query you need to call `execute`");
|
|
@@ -12,7 +12,9 @@ class DropSchemaBuilder {
|
|
|
12
12
|
ifExists() {
|
|
13
13
|
return new DropSchemaBuilder({
|
|
14
14
|
...this.#props,
|
|
15
|
-
dropSchemaNode: drop_schema_node_js_1.DropSchemaNode.
|
|
15
|
+
dropSchemaNode: drop_schema_node_js_1.DropSchemaNode.cloneWith(this.#props.dropSchemaNode, {
|
|
16
|
+
ifExists: true,
|
|
17
|
+
}),
|
|
16
18
|
});
|
|
17
19
|
}
|
|
18
20
|
toOperationNode() {
|
|
@@ -12,7 +12,9 @@ class DropTableBuilder {
|
|
|
12
12
|
ifExists() {
|
|
13
13
|
return new DropTableBuilder({
|
|
14
14
|
...this.#props,
|
|
15
|
-
dropTableNode: drop_table_node_js_1.DropTableNode.
|
|
15
|
+
dropTableNode: drop_table_node_js_1.DropTableNode.cloneWith(this.#props.dropTableNode, {
|
|
16
|
+
ifExists: true,
|
|
17
|
+
}),
|
|
16
18
|
});
|
|
17
19
|
}
|
|
18
20
|
toOperationNode() {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
|
+
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
|
+
import { Compilable } from '../util/compilable.js';
|
|
4
|
+
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
5
|
+
import { QueryId } from '../util/query-id.js';
|
|
6
|
+
import { DropViewNode } from '../operation-node/drop-view-node.js';
|
|
7
|
+
export declare class DropViewBuilder implements OperationNodeSource, Compilable {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(props: DropViewBuilderProps);
|
|
10
|
+
materialized(): DropViewBuilder;
|
|
11
|
+
ifExists(): DropViewBuilder;
|
|
12
|
+
toOperationNode(): DropViewNode;
|
|
13
|
+
compile(): CompiledQuery;
|
|
14
|
+
execute(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export interface DropViewBuilderProps {
|
|
17
|
+
readonly queryId: QueryId;
|
|
18
|
+
readonly executor: QueryExecutor;
|
|
19
|
+
readonly dropViewNode: DropViewNode;
|
|
20
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DropViewBuilder = void 0;
|
|
4
|
+
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
5
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
|
+
const drop_view_node_js_1 = require("../operation-node/drop-view-node.js");
|
|
7
|
+
class DropViewBuilder {
|
|
8
|
+
#props;
|
|
9
|
+
constructor(props) {
|
|
10
|
+
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
11
|
+
}
|
|
12
|
+
materialized() {
|
|
13
|
+
return new DropViewBuilder({
|
|
14
|
+
...this.#props,
|
|
15
|
+
dropViewNode: drop_view_node_js_1.DropViewNode.cloneWith(this.#props.dropViewNode, {
|
|
16
|
+
materialized: true,
|
|
17
|
+
}),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
ifExists() {
|
|
21
|
+
return new DropViewBuilder({
|
|
22
|
+
...this.#props,
|
|
23
|
+
dropViewNode: drop_view_node_js_1.DropViewNode.cloneWith(this.#props.dropViewNode, {
|
|
24
|
+
ifExists: true,
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
toOperationNode() {
|
|
29
|
+
return this.#props.executor.transformQuery(this.#props.dropViewNode, this.#props.queryId);
|
|
30
|
+
}
|
|
31
|
+
compile() {
|
|
32
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
33
|
+
}
|
|
34
|
+
async execute() {
|
|
35
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.DropViewBuilder = DropViewBuilder;
|
|
39
|
+
(0, prevent_await_js_1.preventAwait)(DropViewBuilder, "don't await DropViewBuilder instances directly. To execute the query you need to call `execute`");
|
|
@@ -6,6 +6,8 @@ import { CreateTableBuilder } from './create-table-builder.js';
|
|
|
6
6
|
import { DropIndexBuilder } from './drop-index-builder.js';
|
|
7
7
|
import { DropSchemaBuilder } from './drop-schema-builder.js';
|
|
8
8
|
import { DropTableBuilder } from './drop-table-builder.js';
|
|
9
|
+
import { CreateViewBuilder } from './create-view-builder.js';
|
|
10
|
+
import { DropViewBuilder } from './drop-view-builder.js';
|
|
9
11
|
/**
|
|
10
12
|
* Provides methods for building database schema.
|
|
11
13
|
*/
|
|
@@ -22,7 +24,7 @@ export declare class SchemaModule {
|
|
|
22
24
|
* ```ts
|
|
23
25
|
* await db.schema
|
|
24
26
|
* .createTable('person')
|
|
25
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
27
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
26
28
|
* .addColumn('first_name', 'varchar', col => col.notNull())
|
|
27
29
|
* .addColumn('last_name', 'varchar', col => col.notNull())
|
|
28
30
|
* .addColumn('gender', 'varchar')
|
|
@@ -38,7 +40,7 @@ export declare class SchemaModule {
|
|
|
38
40
|
* ```ts
|
|
39
41
|
* await db.schema
|
|
40
42
|
* .createTable('pet')
|
|
41
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
43
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
42
44
|
* .addColumn('owner_id', 'integer', col => col
|
|
43
45
|
* .references('person.id')
|
|
44
46
|
* .onDelete('cascade')
|
|
@@ -55,7 +57,7 @@ export declare class SchemaModule {
|
|
|
55
57
|
* ```ts
|
|
56
58
|
* await db.schema
|
|
57
59
|
* .createTable('pet')
|
|
58
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
60
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
59
61
|
* .addColumn('owner_id', 'integer')
|
|
60
62
|
* .addForeignKeyConstraint(
|
|
61
63
|
* 'pet_owner_id_foreign', ['owner_id'], 'person', ['id'],
|
|
@@ -135,6 +137,31 @@ export declare class SchemaModule {
|
|
|
135
137
|
* ```
|
|
136
138
|
*/
|
|
137
139
|
alterTable(table: string): AlterTableBuilder;
|
|
140
|
+
/**
|
|
141
|
+
* Create a new view.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```ts
|
|
145
|
+
* await db.schema
|
|
146
|
+
* .createView('dogs')
|
|
147
|
+
* .orReplace()
|
|
148
|
+
* .as(db.selectFrom('pet').selectAll().where('species', '=', 'dog'))
|
|
149
|
+
* .execute()
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
createView(viewName: string): CreateViewBuilder;
|
|
153
|
+
/**
|
|
154
|
+
* Drop a view.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```ts
|
|
158
|
+
* await db.schema
|
|
159
|
+
* .dropView('dogs')
|
|
160
|
+
* .ifExists()
|
|
161
|
+
* .execute()
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
dropView(viewName: string): DropViewBuilder;
|
|
138
165
|
/**
|
|
139
166
|
* See {@link QueryCreator.withSchema}
|
|
140
167
|
*/
|
|
@@ -18,6 +18,10 @@ const drop_schema_builder_js_1 = require("./drop-schema-builder.js");
|
|
|
18
18
|
const drop_table_builder_js_1 = require("./drop-table-builder.js");
|
|
19
19
|
const query_id_js_1 = require("../util/query-id.js");
|
|
20
20
|
const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugin.js");
|
|
21
|
+
const create_view_builder_js_1 = require("./create-view-builder.js");
|
|
22
|
+
const create_view_node_js_1 = require("../operation-node/create-view-node.js");
|
|
23
|
+
const drop_view_builder_js_1 = require("./drop-view-builder.js");
|
|
24
|
+
const drop_view_node_js_1 = require("../operation-node/drop-view-node.js");
|
|
21
25
|
/**
|
|
22
26
|
* Provides methods for building database schema.
|
|
23
27
|
*/
|
|
@@ -36,7 +40,7 @@ class SchemaModule {
|
|
|
36
40
|
* ```ts
|
|
37
41
|
* await db.schema
|
|
38
42
|
* .createTable('person')
|
|
39
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
43
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
40
44
|
* .addColumn('first_name', 'varchar', col => col.notNull())
|
|
41
45
|
* .addColumn('last_name', 'varchar', col => col.notNull())
|
|
42
46
|
* .addColumn('gender', 'varchar')
|
|
@@ -52,7 +56,7 @@ class SchemaModule {
|
|
|
52
56
|
* ```ts
|
|
53
57
|
* await db.schema
|
|
54
58
|
* .createTable('pet')
|
|
55
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
59
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
56
60
|
* .addColumn('owner_id', 'integer', col => col
|
|
57
61
|
* .references('person.id')
|
|
58
62
|
* .onDelete('cascade')
|
|
@@ -69,7 +73,7 @@ class SchemaModule {
|
|
|
69
73
|
* ```ts
|
|
70
74
|
* await db.schema
|
|
71
75
|
* .createTable('pet')
|
|
72
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
76
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
73
77
|
* .addColumn('owner_id', 'integer')
|
|
74
78
|
* .addForeignKeyConstraint(
|
|
75
79
|
* 'pet_owner_id_foreign', ['owner_id'], 'person', ['id'],
|
|
@@ -191,6 +195,43 @@ class SchemaModule {
|
|
|
191
195
|
alterTableNode: alter_table_node_js_1.AlterTableNode.create(table),
|
|
192
196
|
});
|
|
193
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Create a new view.
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* ```ts
|
|
203
|
+
* await db.schema
|
|
204
|
+
* .createView('dogs')
|
|
205
|
+
* .orReplace()
|
|
206
|
+
* .as(db.selectFrom('pet').selectAll().where('species', '=', 'dog'))
|
|
207
|
+
* .execute()
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
createView(viewName) {
|
|
211
|
+
return new create_view_builder_js_1.CreateViewBuilder({
|
|
212
|
+
queryId: (0, query_id_js_1.createQueryId)(),
|
|
213
|
+
executor: this.#executor,
|
|
214
|
+
createViewNode: create_view_node_js_1.CreateViewNode.create(viewName),
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Drop a view.
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```ts
|
|
222
|
+
* await db.schema
|
|
223
|
+
* .dropView('dogs')
|
|
224
|
+
* .ifExists()
|
|
225
|
+
* .execute()
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
dropView(viewName) {
|
|
229
|
+
return new drop_view_builder_js_1.DropViewBuilder({
|
|
230
|
+
queryId: (0, query_id_js_1.createQueryId)(),
|
|
231
|
+
executor: this.#executor,
|
|
232
|
+
dropViewNode: drop_view_node_js_1.DropViewNode.create(viewName),
|
|
233
|
+
});
|
|
234
|
+
}
|
|
194
235
|
/**
|
|
195
236
|
* See {@link QueryCreator.withSchema}
|
|
196
237
|
*/
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.importNamedFunction = exports.importFunction = void 0;
|
|
4
|
+
const object_utils_js_1 = require("./object-utils.js");
|
|
5
|
+
async function importFunction(modulePath) {
|
|
6
|
+
const module = await Promise.resolve().then(() => require(modulePath));
|
|
7
|
+
const errorMessage = `module "${modulePath}" doesn export a function`;
|
|
8
|
+
if ((0, object_utils_js_1.isFunction)(module)) {
|
|
9
|
+
return module;
|
|
10
|
+
}
|
|
11
|
+
else if ((0, object_utils_js_1.isObject)(module) && (0, object_utils_js_1.isFunction)(module.default)) {
|
|
12
|
+
return module.default;
|
|
13
|
+
}
|
|
14
|
+
throw new Error(errorMessage);
|
|
15
|
+
}
|
|
16
|
+
exports.importFunction = importFunction;
|
|
17
|
+
async function importNamedFunction(modulePath, exportName) {
|
|
18
|
+
const module = await Promise.resolve().then(() => require(modulePath));
|
|
19
|
+
const errorMessage = `no function export named "${exportName}" found in module "${modulePath}"`;
|
|
20
|
+
if (!(0, object_utils_js_1.isObject)(module)) {
|
|
21
|
+
throw new Error(errorMessage);
|
|
22
|
+
}
|
|
23
|
+
if ((0, object_utils_js_1.isFunction)(module[exportName])) {
|
|
24
|
+
return module[exportName];
|
|
25
|
+
}
|
|
26
|
+
else if ((0, object_utils_js_1.isObject)(module.default) &&
|
|
27
|
+
(0, object_utils_js_1.isFunction)(module.default[exportName])) {
|
|
28
|
+
return module.default[exportName];
|
|
29
|
+
}
|
|
30
|
+
throw new Error(errorMessage);
|
|
31
|
+
}
|
|
32
|
+
exports.importNamedFunction = importNamedFunction;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function performanceNow(): number;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.performanceNow = void 0;
|
|
4
|
+
const object_utils_js_1 = require("./object-utils.js");
|
|
5
|
+
function performanceNow() {
|
|
6
|
+
if (typeof performance !== 'undefined' && (0, object_utils_js_1.isFunction)(performance.now)) {
|
|
7
|
+
return performance.now();
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return Date.now();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.performanceNow = performanceNow;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { AliasedRawBuilder, RawBuilder } from '../raw-builder/raw-builder.js';
|
|
2
2
|
import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
|
|
3
3
|
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
4
|
+
import { InsertResult } from '../query-builder/insert-result.js';
|
|
5
|
+
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
6
|
+
import { UpdateResult } from '../query-builder/update-result.js';
|
|
4
7
|
/**
|
|
5
8
|
* Given an object type, extracts the union of all value types.
|
|
6
9
|
*/
|
|
@@ -134,25 +137,11 @@ export declare type QueryBuilderFactory<DB, TB extends keyof DB> = (qb: Expressi
|
|
|
134
137
|
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
|
|
135
138
|
export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyRawBuilder;
|
|
136
139
|
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
|
|
137
|
-
export interface InsertResultTypeTag {
|
|
138
|
-
/** @internal */
|
|
139
|
-
readonly __isInsertResultTypeTag__: true;
|
|
140
|
-
}
|
|
141
|
-
export interface DeleteResultTypeTag {
|
|
142
|
-
/** @internal */
|
|
143
|
-
readonly __isDeleteResultTypeTag__: true;
|
|
144
|
-
}
|
|
145
|
-
export interface UpdateResultTypeTag {
|
|
146
|
-
/** @internal */
|
|
147
|
-
readonly __isUpdateResultTypeTag__: true;
|
|
148
|
-
}
|
|
149
140
|
export interface GeneratedPlaceholder {
|
|
150
141
|
/** @internal */
|
|
151
142
|
readonly __isGeneratedPlaceholder__: true;
|
|
152
143
|
}
|
|
153
|
-
export declare type
|
|
154
|
-
export declare type SingleResultRowType<O> = O extends InsertResultTypeTag ? number | undefined : O extends DeleteResultTypeTag ? number : O extends UpdateResultTypeTag ? number : O | undefined;
|
|
155
|
-
export declare type NonEmptySingleResultRowType<O> = O extends InsertResultTypeTag ? number : O extends DeleteResultTypeTag ? number : O extends UpdateResultTypeTag ? number : O;
|
|
144
|
+
export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
|
|
156
145
|
export declare type UnknownRow = Record<string, unknown>;
|
|
157
146
|
export declare type Nullable<T> = {
|
|
158
147
|
[P in keyof T]: T[P] | null;
|
|
@@ -24,7 +24,7 @@ export interface DialectAdapter {
|
|
|
24
24
|
* it's not possible for two migration processes to run in parallel.
|
|
25
25
|
*
|
|
26
26
|
* Most dialects have explicit locks that can be used, like advisory locks
|
|
27
|
-
* in
|
|
27
|
+
* in PostgreSQL and the get_lock function in MySQL.
|
|
28
28
|
*
|
|
29
29
|
* If the dialect doesn't have explicit locks the {@link MIGRATION_LOCK_TABLE}
|
|
30
30
|
* created by Kysely can be used instead. {@link MIGRATION_LOCK_TABLE}
|
|
@@ -44,7 +44,8 @@ export interface DialectAdapter {
|
|
|
44
44
|
*
|
|
45
45
|
* If `supportsTransactionalDdl` is `true` then the `db` passed to this method
|
|
46
46
|
* is a transaction inside which the migrations were executed. Otherwise `db`
|
|
47
|
-
* is a single connection (session) that was used to execute the migrations
|
|
47
|
+
* is a single connection (session) that was used to execute the migrations
|
|
48
|
+
* and the `acquireMigrationLock` call.
|
|
48
49
|
*/
|
|
49
50
|
releaseMigrationLock(db: Kysely<any>): Promise<void>;
|
|
50
51
|
}
|
|
@@ -13,7 +13,7 @@ export class MysqlAdapter {
|
|
|
13
13
|
// released when the connection is destroyed (session ends) or when the lock
|
|
14
14
|
// is released using `release_lock`. This way we know that the lock is either
|
|
15
15
|
// released by us after successfull or failed migrations OR it's released by
|
|
16
|
-
//
|
|
16
|
+
// MySQL if the process gets killed for some reason.
|
|
17
17
|
await db
|
|
18
18
|
.raw(`select get_lock('${LOCK_ID}', ${LOCK_TIMEOUT_SECONDS})`)
|
|
19
19
|
.execute();
|
|
@@ -21,7 +21,7 @@ export declare class MysqlDialect implements Dialect {
|
|
|
21
21
|
createIntrospector(db: Kysely<any>): DatabaseIntrospector;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Config for the
|
|
24
|
+
* Config for the MySQL dialect.
|
|
25
25
|
*
|
|
26
26
|
* This interface is equal to `mysql2` library's pool config.
|
|
27
27
|
*
|
|
@@ -137,7 +137,7 @@ export interface MysqlDialectConfig {
|
|
|
137
137
|
*/
|
|
138
138
|
trace?: boolean;
|
|
139
139
|
/**
|
|
140
|
-
* Allow multiple
|
|
140
|
+
* Allow multiple MySQL statements per query. Be careful with this, it exposes you to SQL injection attacks. (Default: false)
|
|
141
141
|
*/
|
|
142
142
|
multipleStatements?: boolean;
|
|
143
143
|
/**
|
|
@@ -186,7 +186,7 @@ export interface MysqlDialectConfig {
|
|
|
186
186
|
/**
|
|
187
187
|
* Called once for each created connection.
|
|
188
188
|
*
|
|
189
|
-
* This is a Kysely specific feature and does not come from the `
|
|
189
|
+
* This is a Kysely specific feature and does not come from the `mysql2` module.
|
|
190
190
|
*/
|
|
191
191
|
onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
|
|
192
192
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
2
|
+
import { importNamedFunction } from '../../util/dynamic-import.js';
|
|
3
|
+
import { isObject } from '../../util/object-utils.js';
|
|
2
4
|
const PRIVATE_RELEASE_METHOD = Symbol();
|
|
3
5
|
export class MysqlDriver {
|
|
4
6
|
#config;
|
|
@@ -47,19 +49,16 @@ export class MysqlDriver {
|
|
|
47
49
|
}
|
|
48
50
|
async beginTransaction(connection, settings) {
|
|
49
51
|
if (settings.isolationLevel) {
|
|
50
|
-
// On
|
|
51
|
-
await connection.executeQuery({
|
|
52
|
-
sql: `set transaction isolation level ${settings.isolationLevel}`,
|
|
53
|
-
parameters: [],
|
|
54
|
-
});
|
|
52
|
+
// On MySQL this sets the isolation level of the next transaction.
|
|
53
|
+
await connection.executeQuery(CompiledQuery.raw(`set transaction isolation level ${settings.isolationLevel}`));
|
|
55
54
|
}
|
|
56
|
-
await connection.executeQuery(
|
|
55
|
+
await connection.executeQuery(CompiledQuery.raw('begin'));
|
|
57
56
|
}
|
|
58
57
|
async commitTransaction(connection) {
|
|
59
|
-
await connection.executeQuery(
|
|
58
|
+
await connection.executeQuery(CompiledQuery.raw('commit'));
|
|
60
59
|
}
|
|
61
60
|
async rollbackTransaction(connection) {
|
|
62
|
-
await connection.executeQuery(
|
|
61
|
+
await connection.executeQuery(CompiledQuery.raw('rollback'));
|
|
63
62
|
}
|
|
64
63
|
async releaseConnection(connection) {
|
|
65
64
|
const mysqlConnection = connection;
|
|
@@ -80,19 +79,10 @@ export class MysqlDriver {
|
|
|
80
79
|
}
|
|
81
80
|
async function importMysqlPoolFactory() {
|
|
82
81
|
try {
|
|
83
|
-
|
|
84
|
-
// this hacky crap here.
|
|
85
|
-
const mysql = (await import('mysql2'));
|
|
86
|
-
if (isFunction(mysql.createPool)) {
|
|
87
|
-
return mysql.createPool;
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
// With esm the imported module doesn't match the typings.
|
|
91
|
-
return mysql.default.createPool;
|
|
92
|
-
}
|
|
82
|
+
return await importNamedFunction('mysql2', 'createPool');
|
|
93
83
|
}
|
|
94
84
|
catch (error) {
|
|
95
|
-
throw new Error('
|
|
85
|
+
throw new Error('MySQL client not installed. Please run `npm install mysql2`');
|
|
96
86
|
}
|
|
97
87
|
}
|
|
98
88
|
class MysqlConnection {
|
|
@@ -102,19 +92,19 @@ class MysqlConnection {
|
|
|
102
92
|
}
|
|
103
93
|
async executeQuery(compiledQuery) {
|
|
104
94
|
const result = await this.#executeQuery(compiledQuery);
|
|
105
|
-
if (
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
95
|
+
if (isOkPacket(result)) {
|
|
96
|
+
const { insertId, affectedRows } = result;
|
|
97
|
+
return {
|
|
98
|
+
insertId: insertId !== undefined &&
|
|
99
|
+
insertId !== null &&
|
|
100
|
+
insertId.toString() !== '0'
|
|
101
|
+
? BigInt(insertId)
|
|
102
|
+
: undefined,
|
|
103
|
+
numUpdatedOrDeletedRows: affectedRows !== undefined && insertId !== null
|
|
104
|
+
? BigInt(affectedRows)
|
|
105
|
+
: undefined,
|
|
106
|
+
rows: [],
|
|
107
|
+
};
|
|
118
108
|
}
|
|
119
109
|
else if (Array.isArray(result)) {
|
|
120
110
|
return {
|
|
@@ -141,3 +131,6 @@ class MysqlConnection {
|
|
|
141
131
|
this.#rawConnection.release();
|
|
142
132
|
}
|
|
143
133
|
}
|
|
134
|
+
function isOkPacket(obj) {
|
|
135
|
+
return isObject(obj) && 'insertId' in obj && 'affectedRows' in obj;
|
|
136
|
+
}
|
|
@@ -27,7 +27,7 @@ export declare class PostgresDialect implements Dialect {
|
|
|
27
27
|
createIntrospector(db: Kysely<any>): DatabaseIntrospector;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
* Config for the
|
|
30
|
+
* Config for the PostgreSQL dialect.
|
|
31
31
|
*
|
|
32
32
|
* This interface is equal to `pg` library's `Pool` config:
|
|
33
33
|
*
|
|
@@ -91,7 +91,7 @@ export interface PostgresDialectConfig {
|
|
|
91
91
|
*
|
|
92
92
|
* Setting `allowExitOnIdle: true` in the config will allow the node event loop to exit
|
|
93
93
|
* as soon as all clients in the pool are idle, even if their socket is still open
|
|
94
|
-
* to the
|
|
94
|
+
* to the PostgreSQL server. This can be handy in scripts & tests
|
|
95
95
|
* where you don't want to wait for your clients to go idle before your process exits.
|
|
96
96
|
*/
|
|
97
97
|
allowExitOnIdle?: boolean;
|