kysely 0.10.1 → 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 +7 -3
- 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/index.d.ts +8 -0
- package/dist/cjs/index.js +8 -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/create-view-node.d.ts +1 -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 +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +8 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +3 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- 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/select-query-node.d.ts +4 -4
- 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 +1 -1
- 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 +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +24 -13
- package/dist/cjs/query-creator.d.ts +36 -26
- package/dist/cjs/query-creator.js +25 -17
- package/dist/cjs/schema/create-view-builder.d.ts +4 -0
- package/dist/cjs/schema/create-view-builder.js +11 -0
- package/dist/cjs/util/dynamic-import.d.ts +2 -0
- package/dist/cjs/util/dynamic-import.js +32 -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/index.d.ts +8 -0
- package/dist/esm/index.js +8 -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/create-view-node.d.ts +1 -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 +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +8 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +3 -0
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- 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/select-query-node.d.ts +4 -4
- 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 +1 -1
- 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 +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +24 -13
- package/dist/esm/query-creator.d.ts +36 -26
- package/dist/esm/query-creator.js +25 -17
- package/dist/esm/schema/create-view-builder.d.ts +4 -0
- package/dist/esm/schema/create-view-builder.js +11 -0
- package/dist/esm/util/dynamic-import.d.ts +2 -0
- package/dist/esm/util/dynamic-import.js +27 -0
- package/dist/esm/util/type-utils.d.ts +4 -15
- package/package.json +3 -1
package/dist/cjs/kysely.d.ts
CHANGED
|
@@ -116,7 +116,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
|
116
116
|
* .execute()
|
|
117
117
|
* ```
|
|
118
118
|
*
|
|
119
|
-
* The generated SQL (
|
|
119
|
+
* The generated SQL (PostgreSQL):
|
|
120
120
|
*
|
|
121
121
|
* ```sql
|
|
122
122
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -146,17 +146,19 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
|
146
146
|
* const catto = await db.transaction().execute(async (trx) => {
|
|
147
147
|
* const jennifer = await trx.insertInto('person')
|
|
148
148
|
* .values({
|
|
149
|
+
* id: db.generated,
|
|
149
150
|
* first_name: 'Jennifer',
|
|
150
|
-
*
|
|
151
|
+
* last_name: 'Aniston',
|
|
151
152
|
* })
|
|
152
153
|
* .returning('id')
|
|
153
|
-
* .
|
|
154
|
+
* .executeTakeFirstOrThrow()
|
|
154
155
|
*
|
|
155
156
|
* await someFunction(trx, jennifer)
|
|
156
157
|
*
|
|
157
158
|
* return await trx.insertInto('pet')
|
|
158
159
|
* .values({
|
|
159
|
-
*
|
|
160
|
+
* id: db.generated,
|
|
161
|
+
* user_id: jennifer.id,
|
|
160
162
|
* name: 'Catto',
|
|
161
163
|
* species: 'cat'
|
|
162
164
|
* })
|
package/dist/cjs/kysely.js
CHANGED
|
@@ -154,7 +154,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
|
|
|
154
154
|
* .execute()
|
|
155
155
|
* ```
|
|
156
156
|
*
|
|
157
|
-
* The generated SQL (
|
|
157
|
+
* The generated SQL (PostgreSQL):
|
|
158
158
|
*
|
|
159
159
|
* ```sql
|
|
160
160
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -186,17 +186,19 @@ class Kysely extends query_creator_js_1.QueryCreator {
|
|
|
186
186
|
* const catto = await db.transaction().execute(async (trx) => {
|
|
187
187
|
* const jennifer = await trx.insertInto('person')
|
|
188
188
|
* .values({
|
|
189
|
+
* id: db.generated,
|
|
189
190
|
* first_name: 'Jennifer',
|
|
190
|
-
*
|
|
191
|
+
* last_name: 'Aniston',
|
|
191
192
|
* })
|
|
192
193
|
* .returning('id')
|
|
193
|
-
* .
|
|
194
|
+
* .executeTakeFirstOrThrow()
|
|
194
195
|
*
|
|
195
196
|
* await someFunction(trx, jennifer)
|
|
196
197
|
*
|
|
197
198
|
* return await trx.insertInto('pet')
|
|
198
199
|
* .values({
|
|
199
|
-
*
|
|
200
|
+
* id: db.generated,
|
|
201
|
+
* user_id: jennifer.id,
|
|
200
202
|
* name: 'Catto',
|
|
201
203
|
* species: 'cat'
|
|
202
204
|
* })
|
|
@@ -61,7 +61,7 @@ async function ensureMigrationTableExists(db) {
|
|
|
61
61
|
.execute();
|
|
62
62
|
}
|
|
63
63
|
catch (error) {
|
|
64
|
-
// At least on
|
|
64
|
+
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|
65
65
|
// query doesn't throw if the table already exits. That's why we check if
|
|
66
66
|
// the table exist here and ignore the error if it does.
|
|
67
67
|
if (!(await doesTableExists(db, exports.MIGRATION_TABLE))) {
|
|
@@ -81,7 +81,7 @@ async function ensureMigrationLockTableExists(db) {
|
|
|
81
81
|
.execute();
|
|
82
82
|
}
|
|
83
83
|
catch (error) {
|
|
84
|
-
// At least on
|
|
84
|
+
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|
85
85
|
// query doesn't throw if the table already exits. That's why we check if
|
|
86
86
|
// the table exist here and ignore the error if it does.
|
|
87
87
|
if (!(await doesTableExists(db, exports.MIGRATION_LOCK_TABLE))) {
|
|
@@ -183,5 +183,5 @@ function ensureMigrationsAreNotCorrupted(executedMigrationNames, oldMigrationNam
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
function isMigration(obj) {
|
|
186
|
-
return (0, object_utils_js_1.isObject)(obj) && (0, object_utils_js_1.isFunction)(obj.up)
|
|
186
|
+
return (0, object_utils_js_1.isObject)(obj) && (0, object_utils_js_1.isFunction)(obj.up);
|
|
187
187
|
}
|
|
@@ -9,6 +9,7 @@ export interface CreateViewNode extends OperationNode {
|
|
|
9
9
|
readonly name: IdentifierNode;
|
|
10
10
|
readonly materialized?: boolean;
|
|
11
11
|
readonly orReplace?: boolean;
|
|
12
|
+
readonly ifNotExists?: boolean;
|
|
12
13
|
readonly columns?: ReadonlyArray<ColumnNode>;
|
|
13
14
|
readonly as?: SelectQueryNode | RawNode;
|
|
14
15
|
}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FilterNode } from './filter-node.js';
|
|
1
|
+
import { FilterExpressionNode } from './operation-node-utils.js';
|
|
3
2
|
import { OperationNode } from './operation-node.js';
|
|
4
|
-
import { OrNode } from './or-node.js';
|
|
5
|
-
import { ParensNode } from './parens-node.js';
|
|
6
|
-
export declare type HavingNodeChild = FilterNode | AndNode | OrNode | ParensNode;
|
|
7
3
|
export interface HavingNode extends OperationNode {
|
|
8
4
|
readonly kind: 'HavingNode';
|
|
9
|
-
readonly having:
|
|
5
|
+
readonly having: FilterExpressionNode;
|
|
10
6
|
}
|
|
11
7
|
/**
|
|
12
8
|
* @internal
|
|
13
9
|
*/
|
|
14
10
|
export declare const HavingNode: Readonly<{
|
|
15
11
|
is(node: OperationNode): node is HavingNode;
|
|
16
|
-
create(filter:
|
|
17
|
-
cloneWithFilter(havingNode: HavingNode, op: 'And' | 'Or',
|
|
12
|
+
create(filter: FilterExpressionNode): HavingNode;
|
|
13
|
+
cloneWithFilter(havingNode: HavingNode, op: 'And' | 'Or', filter: FilterExpressionNode): HavingNode;
|
|
18
14
|
}>;
|
|
@@ -17,12 +17,12 @@ exports.HavingNode = (0, object_utils_js_1.freeze)({
|
|
|
17
17
|
having: filter,
|
|
18
18
|
});
|
|
19
19
|
},
|
|
20
|
-
cloneWithFilter(havingNode, op,
|
|
20
|
+
cloneWithFilter(havingNode, op, filter) {
|
|
21
21
|
return (0, object_utils_js_1.freeze)({
|
|
22
22
|
...havingNode,
|
|
23
23
|
having: op === 'And'
|
|
24
|
-
? and_node_js_1.AndNode.create(havingNode.having,
|
|
25
|
-
: or_node_js_1.OrNode.create(havingNode.having,
|
|
24
|
+
? and_node_js_1.AndNode.create(havingNode.having, filter)
|
|
25
|
+
: or_node_js_1.OrNode.create(havingNode.having, filter),
|
|
26
26
|
});
|
|
27
27
|
},
|
|
28
28
|
});
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { AliasNode } from './alias-node.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { OnNode } from './on-node.js';
|
|
3
|
+
import { FilterExpressionNode } from './operation-node-utils.js';
|
|
4
4
|
import { OperationNode } from './operation-node.js';
|
|
5
|
-
import { OrNode } from './or-node.js';
|
|
6
|
-
import { ParensNode } from './parens-node.js';
|
|
7
5
|
import { TableNode } from './table-node.js';
|
|
8
6
|
export declare type JoinTableNode = TableNode | AliasNode;
|
|
9
7
|
export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin';
|
|
10
|
-
export declare type JoinNodeOnNode = FilterNode | AndNode | OrNode | ParensNode;
|
|
11
8
|
export interface JoinNode extends OperationNode {
|
|
12
9
|
readonly kind: 'JoinNode';
|
|
13
10
|
readonly joinType: JoinType;
|
|
14
11
|
readonly table: JoinTableNode;
|
|
15
|
-
readonly on?:
|
|
12
|
+
readonly on?: OnNode;
|
|
16
13
|
}
|
|
17
14
|
/**
|
|
18
15
|
* @internal
|
|
@@ -20,7 +17,7 @@ export interface JoinNode extends OperationNode {
|
|
|
20
17
|
export declare const JoinNode: Readonly<{
|
|
21
18
|
is(node: OperationNode): node is JoinNode;
|
|
22
19
|
create(joinType: JoinType, table: JoinTableNode): JoinNode;
|
|
23
|
-
createWithOn(joinType: JoinType, table: JoinTableNode, on:
|
|
24
|
-
cloneWithOn(joinNode: JoinNode,
|
|
25
|
-
cloneWithOrOn(joinNode: JoinNode,
|
|
20
|
+
createWithOn(joinType: JoinType, table: JoinTableNode, on: FilterExpressionNode): JoinNode;
|
|
21
|
+
cloneWithOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
|
|
22
|
+
cloneWithOrOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
|
|
26
23
|
}>;
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JoinNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const
|
|
6
|
-
const or_node_js_1 = require("./or-node.js");
|
|
5
|
+
const on_node_js_1 = require("./on-node.js");
|
|
7
6
|
/**
|
|
8
7
|
* @internal
|
|
9
8
|
*/
|
|
@@ -24,19 +23,23 @@ exports.JoinNode = (0, object_utils_js_1.freeze)({
|
|
|
24
23
|
kind: 'JoinNode',
|
|
25
24
|
joinType,
|
|
26
25
|
table,
|
|
27
|
-
on,
|
|
26
|
+
on: on_node_js_1.OnNode.create(on),
|
|
28
27
|
});
|
|
29
28
|
},
|
|
30
|
-
cloneWithOn(joinNode,
|
|
29
|
+
cloneWithOn(joinNode, filter) {
|
|
31
30
|
return (0, object_utils_js_1.freeze)({
|
|
32
31
|
...joinNode,
|
|
33
|
-
on: joinNode.on
|
|
32
|
+
on: joinNode.on
|
|
33
|
+
? on_node_js_1.OnNode.cloneWithFilter(joinNode.on, 'And', filter)
|
|
34
|
+
: on_node_js_1.OnNode.create(filter),
|
|
34
35
|
});
|
|
35
36
|
},
|
|
36
|
-
cloneWithOrOn(joinNode,
|
|
37
|
+
cloneWithOrOn(joinNode, filter) {
|
|
37
38
|
return (0, object_utils_js_1.freeze)({
|
|
38
39
|
...joinNode,
|
|
39
|
-
on: joinNode.on
|
|
40
|
+
on: joinNode.on
|
|
41
|
+
? on_node_js_1.OnNode.cloneWithFilter(joinNode.on, 'Or', filter)
|
|
42
|
+
: on_node_js_1.OnNode.create(filter),
|
|
40
43
|
});
|
|
41
44
|
},
|
|
42
45
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FilterExpressionNode } from './operation-node-utils.js';
|
|
2
|
+
import { OperationNode } from './operation-node.js';
|
|
3
|
+
export interface OnNode extends OperationNode {
|
|
4
|
+
readonly kind: 'OnNode';
|
|
5
|
+
readonly on: FilterExpressionNode;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare const OnNode: Readonly<{
|
|
11
|
+
is(node: OperationNode): node is OnNode;
|
|
12
|
+
create(filter: FilterExpressionNode): OnNode;
|
|
13
|
+
cloneWithFilter(onNode: OnNode, op: 'And' | 'Or', filter: FilterExpressionNode): OnNode;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const and_node_js_1 = require("./and-node.js");
|
|
6
|
+
const or_node_js_1 = require("./or-node.js");
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
exports.OnNode = (0, object_utils_js_1.freeze)({
|
|
11
|
+
is(node) {
|
|
12
|
+
return node.kind === 'OnNode';
|
|
13
|
+
},
|
|
14
|
+
create(filter) {
|
|
15
|
+
return (0, object_utils_js_1.freeze)({
|
|
16
|
+
kind: 'OnNode',
|
|
17
|
+
on: filter,
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
cloneWithFilter(onNode, op, filter) {
|
|
21
|
+
return (0, object_utils_js_1.freeze)({
|
|
22
|
+
...onNode,
|
|
23
|
+
on: op === 'And'
|
|
24
|
+
? and_node_js_1.AndNode.create(onNode.on, filter)
|
|
25
|
+
: or_node_js_1.OrNode.create(onNode.on, filter),
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
});
|
|
@@ -62,6 +62,7 @@ import { CreateViewNode } from './create-view-node.js';
|
|
|
62
62
|
import { DropViewNode } from './drop-view-node.js';
|
|
63
63
|
import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
|
|
64
64
|
import { DefaultValueNode } from './default-value-node.js';
|
|
65
|
+
import { OnNode } from './on-node.js';
|
|
65
66
|
/**
|
|
66
67
|
* Transforms an operation node tree into another one.
|
|
67
68
|
*
|
|
@@ -153,6 +154,7 @@ export declare class OperationNodeTransformer {
|
|
|
153
154
|
protected transformDropView(node: DropViewNode): DropViewNode;
|
|
154
155
|
protected transformGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): GeneratedAlwaysAsNode;
|
|
155
156
|
protected transformDefaultValue(node: DefaultValueNode): DefaultValueNode;
|
|
157
|
+
protected transformOn(node: OnNode): OnNode;
|
|
156
158
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
157
159
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
158
160
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|
@@ -97,6 +97,7 @@ class OperationNodeTransformer {
|
|
|
97
97
|
DropViewNode: this.transformDropView.bind(this),
|
|
98
98
|
GeneratedAlwaysAsNode: this.transformGeneratedAlwaysAs.bind(this),
|
|
99
99
|
DefaultValueNode: this.transformDefaultValue.bind(this),
|
|
100
|
+
OnNode: this.transformOn.bind(this),
|
|
100
101
|
});
|
|
101
102
|
transformNode = (node) => {
|
|
102
103
|
if (!node) {
|
|
@@ -528,6 +529,7 @@ class OperationNodeTransformer {
|
|
|
528
529
|
kind: 'CreateViewNode',
|
|
529
530
|
name: this.transformNode(node.name),
|
|
530
531
|
orReplace: node.orReplace,
|
|
532
|
+
ifNotExists: node.ifNotExists,
|
|
531
533
|
materialized: node.materialized,
|
|
532
534
|
columns: this.transformNodeList(node.columns),
|
|
533
535
|
as: this.transformNode(node.as),
|
|
@@ -554,6 +556,12 @@ class OperationNodeTransformer {
|
|
|
554
556
|
defaultValue: this.transformNode(node.defaultValue),
|
|
555
557
|
};
|
|
556
558
|
}
|
|
559
|
+
transformOn(node) {
|
|
560
|
+
return {
|
|
561
|
+
kind: 'OnNode',
|
|
562
|
+
on: this.transformNode(node.on),
|
|
563
|
+
};
|
|
564
|
+
}
|
|
557
565
|
transformDataType(node) {
|
|
558
566
|
// An Object.freezed leaf node. No need to clone.
|
|
559
567
|
return node;
|
|
@@ -62,9 +62,11 @@ import { CreateViewNode } from './create-view-node.js';
|
|
|
62
62
|
import { DropViewNode } from './drop-view-node.js';
|
|
63
63
|
import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
|
|
64
64
|
import { DefaultValueNode } from './default-value-node.js';
|
|
65
|
+
import { OnNode } from './on-node.js';
|
|
65
66
|
export declare abstract class OperationNodeVisitor {
|
|
66
67
|
#private;
|
|
67
68
|
protected readonly nodeStack: OperationNode[];
|
|
69
|
+
protected get parentNode(): OperationNode | undefined;
|
|
68
70
|
protected readonly visitNode: (node: OperationNode) => void;
|
|
69
71
|
protected abstract visitSelectQuery(node: SelectQueryNode): void;
|
|
70
72
|
protected abstract visitSelection(node: SelectionNode): void;
|
|
@@ -129,4 +131,5 @@ export declare abstract class OperationNodeVisitor {
|
|
|
129
131
|
protected abstract visitDropView(node: DropViewNode): void;
|
|
130
132
|
protected abstract visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
|
|
131
133
|
protected abstract visitDefaultValue(node: DefaultValueNode): void;
|
|
134
|
+
protected abstract visitOn(node: OnNode): void;
|
|
132
135
|
}
|
|
@@ -4,6 +4,9 @@ exports.OperationNodeVisitor = void 0;
|
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
5
|
class OperationNodeVisitor {
|
|
6
6
|
nodeStack = [];
|
|
7
|
+
get parentNode() {
|
|
8
|
+
return this.nodeStack[this.nodeStack.length - 2];
|
|
9
|
+
}
|
|
7
10
|
#visitors = (0, object_utils_js_1.freeze)({
|
|
8
11
|
AliasNode: this.visitAlias.bind(this),
|
|
9
12
|
ColumnNode: this.visitColumn.bind(this),
|
|
@@ -68,6 +71,7 @@ class OperationNodeVisitor {
|
|
|
68
71
|
DropViewNode: this.visitDropView.bind(this),
|
|
69
72
|
GeneratedAlwaysAsNode: this.visitGeneratedAlwaysAs.bind(this),
|
|
70
73
|
DefaultValueNode: this.visitDefaultValue.bind(this),
|
|
74
|
+
OnNode: this.visitOn.bind(this),
|
|
71
75
|
});
|
|
72
76
|
visitNode = (node) => {
|
|
73
77
|
this.nodeStack.push(node);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedAlwaysAsNode' | 'DefaultValueNode';
|
|
1
|
+
export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedAlwaysAsNode' | 'DefaultValueNode' | 'OnNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -2,10 +2,10 @@ import { InsertQueryNode } from './insert-query-node.js';
|
|
|
2
2
|
import { SelectQueryNode } from './select-query-node.js';
|
|
3
3
|
import { UpdateQueryNode } from './update-query-node.js';
|
|
4
4
|
import { DeleteQueryNode } from './delete-query-node.js';
|
|
5
|
-
import { WhereChildNode } from './where-node.js';
|
|
6
5
|
import { JoinNode } from './join-node.js';
|
|
7
6
|
import { SelectionNode } from './selection-node.js';
|
|
8
7
|
import { OperationNode } from './operation-node.js';
|
|
8
|
+
import { FilterExpressionNode } from './operation-node-utils.js';
|
|
9
9
|
export declare type QueryNode = SelectQueryNode | DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
|
|
10
10
|
export declare type MutatingQueryNode = DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
|
|
11
11
|
export declare type FilterableQueryNode = SelectQueryNode | DeleteQueryNode | UpdateQueryNode;
|
|
@@ -16,8 +16,8 @@ export declare const QueryNode: Readonly<{
|
|
|
16
16
|
is(node: OperationNode): node is QueryNode;
|
|
17
17
|
isMutating(node: OperationNode): node is MutatingQueryNode;
|
|
18
18
|
isFilterable(node: OperationNode): node is FilterableQueryNode;
|
|
19
|
-
cloneWithWhere<T extends FilterableQueryNode>(node: T, filter:
|
|
20
|
-
cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter:
|
|
19
|
+
cloneWithWhere<T extends FilterableQueryNode>(node: T, filter: FilterExpressionNode): T;
|
|
20
|
+
cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter: FilterExpressionNode): T_1;
|
|
21
21
|
cloneWithJoin<T_2 extends FilterableQueryNode>(node: T_2, join: JoinNode): T_2;
|
|
22
22
|
cloneWithReturning<T_3 extends MutatingQueryNode>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
|
|
23
23
|
}>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { FromNode } from './from-node.js';
|
|
2
2
|
import { GroupByItemNode } from './group-by-item-node.js';
|
|
3
3
|
import { GroupByNode } from './group-by-node.js';
|
|
4
|
-
import { HavingNode
|
|
4
|
+
import { HavingNode } from './having-node.js';
|
|
5
5
|
import { JoinNode } from './join-node.js';
|
|
6
6
|
import { LimitNode } from './limit-node.js';
|
|
7
7
|
import { OffsetNode } from './offset-node.js';
|
|
8
8
|
import { OperationNode } from './operation-node.js';
|
|
9
|
-
import { TableExpressionNode } from './operation-node-utils.js';
|
|
9
|
+
import { FilterExpressionNode, TableExpressionNode } from './operation-node-utils.js';
|
|
10
10
|
import { OrderByItemNode } from './order-by-item-node.js';
|
|
11
11
|
import { OrderByNode } from './order-by-node.js';
|
|
12
12
|
import { SelectionNode } from './selection-node.js';
|
|
@@ -44,8 +44,8 @@ export declare const SelectQueryNode: Readonly<{
|
|
|
44
44
|
cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
|
|
45
45
|
cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
|
|
46
46
|
cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
|
|
47
|
-
cloneWithHaving(selectNode: SelectQueryNode, filter:
|
|
48
|
-
cloneWithOrHaving(selectNode: SelectQueryNode, filter:
|
|
47
|
+
cloneWithHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
|
|
48
|
+
cloneWithOrHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
|
|
49
49
|
cloneWithDistinct(selectNode: SelectQueryNode): SelectQueryNode;
|
|
50
50
|
cloneWithUnion(selectNode: SelectQueryNode, union: UnionNode): SelectQueryNode;
|
|
51
51
|
}>;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FilterNode } from './filter-node.js';
|
|
1
|
+
import { FilterExpressionNode } from './operation-node-utils.js';
|
|
3
2
|
import { OperationNode } from './operation-node.js';
|
|
4
|
-
import { OrNode } from './or-node.js';
|
|
5
|
-
import { ParensNode } from './parens-node.js';
|
|
6
|
-
export declare type WhereChildNode = FilterNode | AndNode | OrNode | ParensNode;
|
|
7
3
|
export interface WhereNode extends OperationNode {
|
|
8
4
|
readonly kind: 'WhereNode';
|
|
9
|
-
readonly where:
|
|
5
|
+
readonly where: FilterExpressionNode;
|
|
10
6
|
}
|
|
11
7
|
/**
|
|
12
8
|
* @internal
|
|
13
9
|
*/
|
|
14
10
|
export declare const WhereNode: Readonly<{
|
|
15
11
|
is(node: OperationNode): node is WhereNode;
|
|
16
|
-
create(filter:
|
|
17
|
-
cloneWithFilter(whereNode: WhereNode, op: 'And' | 'Or',
|
|
12
|
+
create(filter: FilterExpressionNode): WhereNode;
|
|
13
|
+
cloneWithFilter(whereNode: WhereNode, op: 'And' | 'Or', filter: FilterExpressionNode): WhereNode;
|
|
18
14
|
}>;
|
|
@@ -17,12 +17,12 @@ exports.WhereNode = (0, object_utils_js_1.freeze)({
|
|
|
17
17
|
where: filter,
|
|
18
18
|
});
|
|
19
19
|
},
|
|
20
|
-
cloneWithFilter(whereNode, op,
|
|
20
|
+
cloneWithFilter(whereNode, op, filter) {
|
|
21
21
|
return (0, object_utils_js_1.freeze)({
|
|
22
22
|
...whereNode,
|
|
23
23
|
where: op === 'And'
|
|
24
|
-
? and_node_js_1.AndNode.create(whereNode.where,
|
|
25
|
-
: or_node_js_1.OrNode.create(whereNode.where,
|
|
24
|
+
? and_node_js_1.AndNode.create(whereNode.where, filter)
|
|
25
|
+
: or_node_js_1.OrNode.create(whereNode.where, filter),
|
|
26
26
|
});
|
|
27
27
|
},
|
|
28
28
|
});
|
|
@@ -101,7 +101,7 @@ function parseOnGroup(ctx, callback) {
|
|
|
101
101
|
if (!joinNode.on) {
|
|
102
102
|
throw new Error('no `on*` methods called insided a group callback');
|
|
103
103
|
}
|
|
104
|
-
return parens_node_js_1.ParensNode.create(joinNode.on);
|
|
104
|
+
return parens_node_js_1.ParensNode.create(joinNode.on.on);
|
|
105
105
|
}
|
|
106
106
|
function parseExistExpression(ctx, type, arg) {
|
|
107
107
|
const node = (0, object_utils_js_1.isFunction)(arg)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
|
+
import { InsertResult } from '../query-builder/insert-result.js';
|
|
1
3
|
import { QueryBuilder } from '../query-builder/query-builder.js';
|
|
2
|
-
import {
|
|
4
|
+
import { UpdateResult } from '../query-builder/update-result.js';
|
|
3
5
|
import { Selection } from './select-parser.js';
|
|
4
6
|
/**
|
|
5
7
|
* `returning` method output query builder type
|
|
6
8
|
*/
|
|
7
|
-
export declare type QueryBuilderWithReturning<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O extends
|
|
9
|
+
export declare type QueryBuilderWithReturning<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O extends InsertResult ? Selection<DB, TB, S> : O extends DeleteResult ? Selection<DB, TB, S> : O extends UpdateResult ? Selection<DB, TB, S> : O & Selection<DB, TB, S>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
2
2
|
import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
|
|
3
3
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
|
-
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedColumn, AnyAliasedColumnWithTable, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnyColumn, AnyColumnWithTable,
|
|
4
|
+
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedColumn, AnyAliasedColumnWithTable, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
|
|
5
5
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
6
|
import { ParseContext } from './parse-context.js';
|
|
7
7
|
/**
|
|
@@ -13,7 +13,7 @@ export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpr
|
|
|
13
13
|
* Given a selection expression returns a query builder type that
|
|
14
14
|
* has the selection.
|
|
15
15
|
*/
|
|
16
|
-
export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O
|
|
16
|
+
export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O & Selection<DB, TB, S>>;
|
|
17
17
|
/**
|
|
18
18
|
* `selectAll` output query builder type.
|
|
19
19
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { QueryResult } from '../../driver/database-connection.js';
|
|
2
|
-
import { UnknownRow } from '../../index.js';
|
|
3
2
|
import { RootOperationNode } from '../../query-compiler/query-compiler.js';
|
|
3
|
+
import { UnknownRow } from '../../util/type-utils.js';
|
|
4
4
|
import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } from '../kysely-plugin.js';
|
|
5
5
|
/**
|
|
6
6
|
* Transforms all ValueNodes to immediate.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeleteResult = void 0;
|
|
4
|
+
class DeleteResult {
|
|
5
|
+
#numDeletedRows;
|
|
6
|
+
constructor(numDeletedRows) {
|
|
7
|
+
this.#numDeletedRows = numDeletedRows;
|
|
8
|
+
}
|
|
9
|
+
get numDeletedRows() {
|
|
10
|
+
return this.#numDeletedRows;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.DeleteResult = DeleteResult;
|
|
@@ -26,7 +26,7 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
26
26
|
* .execute()
|
|
27
27
|
* ```
|
|
28
28
|
*
|
|
29
|
-
* The generated SQL (
|
|
29
|
+
* The generated SQL (PostgreSQL):
|
|
30
30
|
*
|
|
31
31
|
* ```sql
|
|
32
32
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -62,7 +62,7 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
62
62
|
* console.log(result[0].owner_name)
|
|
63
63
|
* ```
|
|
64
64
|
*
|
|
65
|
-
* The generated SQL (
|
|
65
|
+
* The generated SQL (PostgreSQL):
|
|
66
66
|
*
|
|
67
67
|
* ```sql
|
|
68
68
|
* select
|
|
@@ -19,7 +19,7 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
|
19
19
|
* .execute()
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
22
|
-
* The generated SQL (
|
|
22
|
+
* The generated SQL (PostgreSQL):
|
|
23
23
|
*
|
|
24
24
|
* ```sql
|
|
25
25
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -66,7 +66,7 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
66
66
|
* Calls the `sum` function for the column given as the argument.
|
|
67
67
|
*
|
|
68
68
|
* If this is used in a `select` statement the type of the selected expression
|
|
69
|
-
* will be `number | string |
|
|
69
|
+
* will be `number | string | bigint` by default. This is because Kysely can't
|
|
70
70
|
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
71
71
|
* the largest javascript number and a string is returned instead. Most drivers
|
|
72
72
|
* allow you to configure the output type of large numbers and Kysely can't
|
|
@@ -83,12 +83,12 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
83
83
|
* .execute()
|
|
84
84
|
* ```
|
|
85
85
|
*/
|
|
86
|
-
sum<O extends number | string |
|
|
86
|
+
sum<O extends number | string | bigint, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
|
|
87
87
|
/**
|
|
88
88
|
* Calls the `count` function for the column given as the argument.
|
|
89
89
|
*
|
|
90
90
|
* If this is used in a `select` statement the type of the selected expression
|
|
91
|
-
* will be `number | string |
|
|
91
|
+
* will be `number | string |bigint` by default. This is because Kysely can't
|
|
92
92
|
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
93
93
|
* the largest javascript number and a string is returned instead. Most drivers
|
|
94
94
|
* allow you to configure the output type of large numbers and Kysely can't
|
|
@@ -105,7 +105,7 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
105
105
|
* .execute()
|
|
106
106
|
* ```
|
|
107
107
|
*/
|
|
108
|
-
count<O extends number | string |
|
|
108
|
+
count<O extends number | string | bigint, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
|
|
109
109
|
}
|
|
110
110
|
export interface FunctionBuilderProps {
|
|
111
111
|
readonly executor: QueryExecutor;
|
|
@@ -22,7 +22,7 @@ const query_id_js_1 = require("../util/query-id.js");
|
|
|
22
22
|
* .execute()
|
|
23
23
|
* ```
|
|
24
24
|
*
|
|
25
|
-
* The generated SQL (
|
|
25
|
+
* The generated SQL (PostgreSQL):
|
|
26
26
|
*
|
|
27
27
|
* ```sql
|
|
28
28
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -82,7 +82,7 @@ class FunctionBuilder {
|
|
|
82
82
|
* Calls the `sum` function for the column given as the argument.
|
|
83
83
|
*
|
|
84
84
|
* If this is used in a `select` statement the type of the selected expression
|
|
85
|
-
* will be `number | string |
|
|
85
|
+
* will be `number | string | bigint` by default. This is because Kysely can't
|
|
86
86
|
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
87
87
|
* the largest javascript number and a string is returned instead. Most drivers
|
|
88
88
|
* allow you to configure the output type of large numbers and Kysely can't
|
|
@@ -106,7 +106,7 @@ class FunctionBuilder {
|
|
|
106
106
|
* Calls the `count` function for the column given as the argument.
|
|
107
107
|
*
|
|
108
108
|
* If this is used in a `select` statement the type of the selected expression
|
|
109
|
-
* will be `number | string |
|
|
109
|
+
* will be `number | string |bigint` by default. This is because Kysely can't
|
|
110
110
|
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
111
111
|
* the largest javascript number and a string is returned instead. Most drivers
|
|
112
112
|
* allow you to configure the output type of large numbers and Kysely can't
|