kysely 0.17.1 → 0.18.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 +2 -0
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +19 -0
- package/dist/cjs/driver/default-connection-provider.d.ts +1 -1
- package/dist/cjs/driver/default-connection-provider.js +2 -2
- package/dist/cjs/driver/dummy-driver.d.ts +8 -0
- package/dist/cjs/driver/dummy-driver.js +8 -0
- package/dist/cjs/driver/single-connection-provider.d.ts +1 -1
- package/dist/cjs/driver/single-connection-provider.js +2 -2
- package/dist/cjs/operation-node/alias-node.d.ts +2 -2
- package/dist/cjs/operation-node/alias-node.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +1 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/update-query-node.js +11 -2
- package/dist/cjs/parser/complex-expression-parser.d.ts +1 -1
- package/dist/cjs/parser/reference-parser.js +2 -1
- package/dist/cjs/parser/table-parser.js +2 -1
- package/dist/cjs/parser/update-set-parser.d.ts +3 -3
- package/dist/cjs/parser/with-parser.d.ts +2 -2
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
- package/dist/cjs/query-builder/delete-query-builder.d.ts +12 -5
- package/dist/cjs/query-builder/expression-builder.d.ts +1 -1
- package/dist/cjs/query-builder/expression-builder.js +2 -2
- package/dist/cjs/query-builder/function-builder.js +2 -2
- package/dist/cjs/query-builder/insert-query-builder.d.ts +1 -1
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -11
- package/dist/cjs/query-builder/select-query-builder.d.ts +15 -6
- package/dist/cjs/query-builder/select-query-builder.js +5 -5
- package/dist/cjs/query-builder/update-query-builder.d.ts +69 -33
- package/dist/cjs/query-builder/update-query-builder.js +7 -0
- package/dist/cjs/query-builder/where-interface.d.ts +12 -5
- package/dist/cjs/query-compiler/default-query-compiler.js +4 -0
- package/dist/cjs/query-creator.d.ts +1 -1
- package/dist/cjs/query-executor/default-query-executor.d.ts +8 -5
- package/dist/cjs/query-executor/default-query-executor.js +2 -2
- package/dist/cjs/query-executor/noop-query-executor.d.ts +7 -4
- package/dist/cjs/query-executor/noop-query-executor.js +2 -2
- package/dist/cjs/query-executor/query-executor-base.d.ts +62 -0
- package/dist/cjs/query-executor/query-executor-base.js +46 -0
- package/dist/cjs/query-executor/query-executor.d.ts +16 -17
- package/dist/cjs/query-executor/query-executor.js +0 -59
- package/dist/cjs/raw-builder/raw-builder.d.ts +32 -2
- package/dist/cjs/raw-builder/raw-builder.js +5 -26
- package/dist/cjs/raw-builder/sql.d.ts +11 -3
- package/dist/cjs/raw-builder/sql.js +10 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +24 -2
- package/dist/cjs/schema/alter-table-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.d.ts +4 -2
- package/dist/cjs/schema/create-table-builder.d.ts +1 -1
- package/dist/cjs/schema/create-table-builder.js +1 -1
- package/dist/cjs/util/type-utils.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +19 -0
- package/dist/esm/driver/default-connection-provider.d.ts +1 -1
- package/dist/esm/driver/default-connection-provider.js +2 -2
- package/dist/esm/driver/dummy-driver.d.ts +8 -0
- package/dist/esm/driver/dummy-driver.js +8 -0
- package/dist/esm/driver/single-connection-provider.d.ts +1 -1
- package/dist/esm/driver/single-connection-provider.js +2 -2
- package/dist/esm/operation-node/alias-node.d.ts +2 -2
- package/dist/esm/operation-node/alias-node.js +1 -2
- package/dist/esm/operation-node/operation-node-transformer.js +1 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -0
- package/dist/esm/operation-node/update-query-node.js +11 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +1 -1
- package/dist/esm/parser/reference-parser.js +2 -1
- package/dist/esm/parser/table-parser.js +2 -1
- package/dist/esm/parser/update-set-parser.d.ts +3 -3
- package/dist/esm/parser/with-parser.d.ts +2 -2
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
- package/dist/esm/query-builder/delete-query-builder.d.ts +12 -5
- package/dist/esm/query-builder/expression-builder.d.ts +1 -1
- package/dist/esm/query-builder/expression-builder.js +1 -1
- package/dist/esm/query-builder/function-builder.js +1 -1
- package/dist/esm/query-builder/insert-query-builder.d.ts +1 -1
- package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -11
- package/dist/esm/query-builder/select-query-builder.d.ts +15 -6
- package/dist/esm/query-builder/select-query-builder.js +5 -5
- package/dist/esm/query-builder/update-query-builder.d.ts +69 -33
- package/dist/esm/query-builder/update-query-builder.js +7 -0
- package/dist/esm/query-builder/where-interface.d.ts +12 -5
- package/dist/esm/query-compiler/default-query-compiler.js +4 -0
- package/dist/esm/query-creator.d.ts +1 -1
- package/dist/esm/query-executor/default-query-executor.d.ts +8 -5
- package/dist/esm/query-executor/default-query-executor.js +2 -2
- package/dist/esm/query-executor/noop-query-executor.d.ts +7 -4
- package/dist/esm/query-executor/noop-query-executor.js +2 -2
- package/dist/esm/query-executor/query-executor-base.d.ts +62 -0
- package/dist/esm/query-executor/query-executor-base.js +43 -0
- package/dist/esm/query-executor/query-executor.d.ts +16 -17
- package/dist/esm/query-executor/query-executor.js +1 -57
- package/dist/esm/raw-builder/raw-builder.d.ts +32 -2
- package/dist/esm/raw-builder/raw-builder.js +5 -26
- package/dist/esm/raw-builder/sql.d.ts +11 -3
- package/dist/esm/raw-builder/sql.js +10 -2
- package/dist/esm/schema/alter-table-builder.d.ts +24 -2
- package/dist/esm/schema/alter-table-builder.js +20 -0
- package/dist/esm/schema/column-definition-builder.d.ts +4 -2
- package/dist/esm/schema/create-table-builder.d.ts +1 -1
- package/dist/esm/schema/create-table-builder.js +1 -1
- package/dist/esm/util/type-utils.d.ts +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
[](https://stand-with-ukraine.pp.ua)
|
|
2
|
+
|
|
1
3
|
[](https://discord.gg/C9aJ49mCra)
|
|
2
4
|
[](https://github.com/koskimas/kysely)
|
|
3
5
|
|
|
@@ -162,6 +162,25 @@ export interface MysqlDialectConfig {
|
|
|
162
162
|
* If keep-alive is enabled users can supply an initial delay.
|
|
163
163
|
*/
|
|
164
164
|
keepAliveInitialDelay?: number;
|
|
165
|
+
charsetNumber?: number;
|
|
166
|
+
compress?: boolean;
|
|
167
|
+
authSwitchHandler?: (data: any, callback: () => void) => any;
|
|
168
|
+
connectAttributes?: {
|
|
169
|
+
[param: string]: any;
|
|
170
|
+
};
|
|
171
|
+
decimalNumbers?: boolean;
|
|
172
|
+
isServer?: boolean;
|
|
173
|
+
maxPreparedStatements?: number;
|
|
174
|
+
namedPlaceholders?: boolean;
|
|
175
|
+
nestTables?: boolean | string;
|
|
176
|
+
passwordSha1?: string;
|
|
177
|
+
pool?: any;
|
|
178
|
+
stream?: any;
|
|
179
|
+
uri?: string;
|
|
180
|
+
Promise?: any;
|
|
181
|
+
authPlugins?: {
|
|
182
|
+
[key: string]: any;
|
|
183
|
+
};
|
|
165
184
|
/**
|
|
166
185
|
* Called once for each created connection.
|
|
167
186
|
*
|
|
@@ -8,5 +8,5 @@ export declare class DefaultConnectionProvider implements ConnectionProvider {
|
|
|
8
8
|
* Provides a connection for the callback and takes care of disposing
|
|
9
9
|
* the connection after the callback has been run.
|
|
10
10
|
*/
|
|
11
|
-
provideConnection<T>(
|
|
11
|
+
provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
|
|
12
12
|
}
|
|
@@ -6,10 +6,10 @@ class DefaultConnectionProvider {
|
|
|
6
6
|
constructor(driver) {
|
|
7
7
|
this.#driver = driver;
|
|
8
8
|
}
|
|
9
|
-
async provideConnection(
|
|
9
|
+
async provideConnection(consumer) {
|
|
10
10
|
const connection = await this.#driver.acquireConnection();
|
|
11
11
|
try {
|
|
12
|
-
return await
|
|
12
|
+
return await consumer(connection);
|
|
13
13
|
}
|
|
14
14
|
finally {
|
|
15
15
|
await this.#driver.releaseConnection(connection);
|
|
@@ -27,6 +27,14 @@ import { Driver } from './driver.js';
|
|
|
27
27
|
* },
|
|
28
28
|
* })
|
|
29
29
|
* ```
|
|
30
|
+
*
|
|
31
|
+
* You can use it to build a query and compile it to SQL but trying to
|
|
32
|
+
* execute the query will throw an error.
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* const { sql } = db.selectFrom('person').selectAll().compile()
|
|
36
|
+
* console.log(sql) // select * from "person"
|
|
37
|
+
* ```
|
|
30
38
|
*/
|
|
31
39
|
export declare class DummyDriver implements Driver {
|
|
32
40
|
/**
|
|
@@ -28,6 +28,14 @@ exports.DummyDriver = void 0;
|
|
|
28
28
|
* },
|
|
29
29
|
* })
|
|
30
30
|
* ```
|
|
31
|
+
*
|
|
32
|
+
* You can use it to build a query and compile it to SQL but trying to
|
|
33
|
+
* execute the query will throw an error.
|
|
34
|
+
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* const { sql } = db.selectFrom('person').selectAll().compile()
|
|
37
|
+
* console.log(sql) // select * from "person"
|
|
38
|
+
* ```
|
|
31
39
|
*/
|
|
32
40
|
class DummyDriver {
|
|
33
41
|
async init() {
|
|
@@ -7,5 +7,5 @@ export declare class SingleConnectionProvider implements ConnectionProvider {
|
|
|
7
7
|
* Provides a connection for the callback and takes care of disposing
|
|
8
8
|
* the connection after the callback has been run.
|
|
9
9
|
*/
|
|
10
|
-
provideConnection<T>(
|
|
10
|
+
provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
|
|
11
11
|
}
|
|
@@ -7,11 +7,11 @@ class SingleConnectionProvider {
|
|
|
7
7
|
constructor(connection) {
|
|
8
8
|
this.#connection = connection;
|
|
9
9
|
}
|
|
10
|
-
async provideConnection(
|
|
10
|
+
async provideConnection(consumer) {
|
|
11
11
|
while (this.#runningPromise) {
|
|
12
12
|
await this.#runningPromise;
|
|
13
13
|
}
|
|
14
|
-
const promise = this.#run(
|
|
14
|
+
const promise = this.#run(consumer);
|
|
15
15
|
this.#runningPromise = promise
|
|
16
16
|
.then(() => {
|
|
17
17
|
this.#runningPromise = undefined;
|
|
@@ -9,12 +9,12 @@ export declare type AliasNodeChild = ColumnNode | ReferenceNode | TableNode | Se
|
|
|
9
9
|
export interface AliasNode extends OperationNode {
|
|
10
10
|
readonly kind: 'AliasNode';
|
|
11
11
|
readonly node: AliasNodeChild;
|
|
12
|
-
readonly alias: IdentifierNode;
|
|
12
|
+
readonly alias: IdentifierNode | RawNode;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* @internal
|
|
16
16
|
*/
|
|
17
17
|
export declare const AliasNode: Readonly<{
|
|
18
18
|
is(node: OperationNode): node is AliasNode;
|
|
19
|
-
create(node: AliasNodeChild, alias:
|
|
19
|
+
create(node: AliasNodeChild, alias: IdentifierNode | RawNode): AliasNode;
|
|
20
20
|
}>;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AliasNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const identifier_node_js_1 = require("./identifier-node.js");
|
|
6
5
|
/**
|
|
7
6
|
* @internal
|
|
8
7
|
*/
|
|
@@ -14,7 +13,7 @@ exports.AliasNode = (0, object_utils_js_1.freeze)({
|
|
|
14
13
|
return (0, object_utils_js_1.freeze)({
|
|
15
14
|
kind: 'AliasNode',
|
|
16
15
|
node,
|
|
17
|
-
alias
|
|
16
|
+
alias,
|
|
18
17
|
});
|
|
19
18
|
},
|
|
20
19
|
});
|
|
@@ -333,6 +333,7 @@ class OperationNodeTransformer {
|
|
|
333
333
|
return {
|
|
334
334
|
kind: 'UpdateQueryNode',
|
|
335
335
|
table: this.transformNode(node.table),
|
|
336
|
+
from: this.transformNode(node.from),
|
|
336
337
|
joins: this.transformNodeList(node.joins),
|
|
337
338
|
where: this.transformNode(node.where),
|
|
338
339
|
updates: this.transformNodeList(node.updates),
|
|
@@ -7,10 +7,12 @@ import { ReturningNode } from './returning-node.js';
|
|
|
7
7
|
import { ValueListNode } from './value-list-node.js';
|
|
8
8
|
import { WhereNode } from './where-node.js';
|
|
9
9
|
import { WithNode } from './with-node.js';
|
|
10
|
+
import { FromNode } from './from-node.js';
|
|
10
11
|
export declare type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
|
|
11
12
|
export interface UpdateQueryNode extends OperationNode {
|
|
12
13
|
readonly kind: 'UpdateQueryNode';
|
|
13
14
|
readonly table: TableExpressionNode;
|
|
15
|
+
readonly from?: FromNode;
|
|
14
16
|
readonly joins?: ReadonlyArray<JoinNode>;
|
|
15
17
|
readonly where?: WhereNode;
|
|
16
18
|
readonly updates?: ReadonlyArray<ColumnUpdateNode>;
|
|
@@ -23,5 +25,6 @@ export interface UpdateQueryNode extends OperationNode {
|
|
|
23
25
|
export declare const UpdateQueryNode: Readonly<{
|
|
24
26
|
is(node: OperationNode): node is UpdateQueryNode;
|
|
25
27
|
create(table: TableExpressionNode, withNode?: WithNode | undefined): UpdateQueryNode;
|
|
28
|
+
cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<TableExpressionNode>): UpdateQueryNode;
|
|
26
29
|
cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
|
|
27
30
|
}>;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UpdateQueryNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const from_node_js_1 = require("./from-node.js");
|
|
5
6
|
/**
|
|
6
7
|
* @internal
|
|
7
8
|
*/
|
|
@@ -10,11 +11,19 @@ exports.UpdateQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
10
11
|
return node.kind === 'UpdateQueryNode';
|
|
11
12
|
},
|
|
12
13
|
create(table, withNode) {
|
|
13
|
-
return {
|
|
14
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
15
|
kind: 'UpdateQueryNode',
|
|
15
16
|
table,
|
|
16
17
|
...(withNode && { with: withNode }),
|
|
17
|
-
};
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
cloneWithFromItems(updateQuery, fromItems) {
|
|
21
|
+
return (0, object_utils_js_1.freeze)({
|
|
22
|
+
...updateQuery,
|
|
23
|
+
from: updateQuery.from
|
|
24
|
+
? from_node_js_1.FromNode.cloneWithFroms(updateQuery.from, fromItems)
|
|
25
|
+
: from_node_js_1.FromNode.create(fromItems),
|
|
26
|
+
});
|
|
18
27
|
},
|
|
19
28
|
cloneWithUpdates(updateQuery, updates) {
|
|
20
29
|
return (0, object_utils_js_1.freeze)({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { RawBuilder } from '../index-nodeless.js';
|
|
2
1
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
2
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
4
3
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
5
5
|
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
|
|
6
6
|
export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB>;
|
|
7
7
|
export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB>;
|
|
@@ -8,6 +8,7 @@ const table_node_js_1 = require("../operation-node/table-node.js");
|
|
|
8
8
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
9
9
|
const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
|
|
10
10
|
const dynamic_reference_builder_js_1 = require("../dynamic/dynamic-reference-builder.js");
|
|
11
|
+
const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
11
12
|
function parseReferenceExpressionOrList(arg) {
|
|
12
13
|
if ((0, object_utils_js_1.isReadonlyArray)(arg)) {
|
|
13
14
|
return arg.map((it) => parseReferenceExpression(it));
|
|
@@ -50,7 +51,7 @@ function parseAliasedStringReference(ref) {
|
|
|
50
51
|
const ALIAS_SEPARATOR = ' as ';
|
|
51
52
|
if (ref.includes(ALIAS_SEPARATOR)) {
|
|
52
53
|
const [columnRef, alias] = ref.split(ALIAS_SEPARATOR).map(trim);
|
|
53
|
-
return alias_node_js_1.AliasNode.create(parseStringReference(columnRef), alias);
|
|
54
|
+
return alias_node_js_1.AliasNode.create(parseStringReference(columnRef), identifier_node_js_1.IdentifierNode.create(alias));
|
|
54
55
|
}
|
|
55
56
|
else {
|
|
56
57
|
return parseStringReference(ref);
|
|
@@ -5,6 +5,7 @@ const object_utils_js_1 = require("../util/object-utils.js");
|
|
|
5
5
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
6
6
|
const table_node_js_1 = require("../operation-node/table-node.js");
|
|
7
7
|
const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
|
|
8
|
+
const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
8
9
|
function parseTableExpressionOrList(table) {
|
|
9
10
|
if ((0, object_utils_js_1.isReadonlyArray)(table)) {
|
|
10
11
|
return table.map((it) => parseTableExpression(it));
|
|
@@ -27,7 +28,7 @@ function parseAliasedTable(from) {
|
|
|
27
28
|
const ALIAS_SEPARATOR = ' as ';
|
|
28
29
|
if (from.includes(ALIAS_SEPARATOR)) {
|
|
29
30
|
const [table, alias] = from.split(ALIAS_SEPARATOR).map(trim);
|
|
30
|
-
return alias_node_js_1.AliasNode.create(parseTable(table), alias);
|
|
31
|
+
return alias_node_js_1.AliasNode.create(parseTable(table), identifier_node_js_1.IdentifierNode.create(alias));
|
|
31
32
|
}
|
|
32
33
|
else {
|
|
33
34
|
return parseTable(from);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
2
2
|
import { UpdateKeys, UpdateType } from '../util/column-type.js';
|
|
3
3
|
import { ValueExpression } from './value-parser.js';
|
|
4
|
-
export declare type MutationObject<DB, TB extends keyof DB> = {
|
|
5
|
-
[C in UpdateKeys<DB[
|
|
4
|
+
export declare type MutationObject<DB, TB extends keyof DB, TM extends keyof DB> = {
|
|
5
|
+
[C in UpdateKeys<DB[TM]>]?: ValueExpression<DB, TB, UpdateType<DB[TM][C]>>;
|
|
6
6
|
};
|
|
7
|
-
export declare function parseUpdateObject(row: MutationObject<any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|
7
|
+
export declare function parseUpdateObject(row: MutationObject<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|
@@ -8,14 +8,14 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
|
8
8
|
export declare type CommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB>) => CommonTableExpressionOutput<DB, CN>;
|
|
9
9
|
export declare type RecursiveCommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB & Record<ExtractTableFromCommonTableExpressionName<CN>, ExtractRowFromCommonTableExpressionName<CN>>>) => CommonTableExpressionOutput<DB, CN>;
|
|
10
10
|
export declare type QueryCreatorWithCommonTableExpression<DB, CN extends string, CTE> = QueryCreator<DB & Record<ExtractTableFromCommonTableExpressionName<CN>, ExtractRowFromCommonTableExpression<CTE>>>;
|
|
11
|
-
declare type CommonTableExpressionOutput<DB, CN extends string> = SelectQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | InsertQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | UpdateQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | DeleteQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | RawBuilder<ExtractRowFromCommonTableExpressionName<CN>>;
|
|
11
|
+
declare type CommonTableExpressionOutput<DB, CN extends string> = SelectQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | InsertQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | UpdateQueryBuilder<DB, any, any, ExtractRowFromCommonTableExpressionName<CN>> | DeleteQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | RawBuilder<ExtractRowFromCommonTableExpressionName<CN>>;
|
|
12
12
|
/**
|
|
13
13
|
* Given a common CommonTableExpression CTE extracts the row type from it.
|
|
14
14
|
*
|
|
15
15
|
* For example a CTE `(db) => db.selectFrom('person').select(['id', 'first_name'])`
|
|
16
16
|
* would result in `Pick<Person, 'id' | 'first_name'>`.
|
|
17
17
|
*/
|
|
18
|
-
declare type ExtractRowFromCommonTableExpression<CTE> = CTE extends (creator: QueryCreator<any>) => infer Q ? Q extends SelectQueryBuilder<any, any, infer QO> ? QO : Q extends InsertQueryBuilder<any, any, infer QO> ? QO : Q extends UpdateQueryBuilder<any, any, infer QO> ? QO : Q extends DeleteQueryBuilder<any, any, infer QO> ? QO : Q extends RawBuilder<infer RO> ? RO : never : never;
|
|
18
|
+
declare type ExtractRowFromCommonTableExpression<CTE> = CTE extends (creator: QueryCreator<any>) => infer Q ? Q extends SelectQueryBuilder<any, any, infer QO> ? QO : Q extends InsertQueryBuilder<any, any, infer QO> ? QO : Q extends UpdateQueryBuilder<any, any, any, infer QO> ? QO : Q extends DeleteQueryBuilder<any, any, infer QO> ? QO : Q extends RawBuilder<infer RO> ? RO : never : never;
|
|
19
19
|
/**
|
|
20
20
|
* Extracts 'person' from a string like 'person(id, first_name)'.
|
|
21
21
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { DeleteQueryNode
|
|
1
|
+
import { DeleteQueryNode } from '../../operation-node/delete-query-node.js';
|
|
2
2
|
import { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';
|
|
3
3
|
import { SelectQueryNode } from '../../operation-node/select-query-node.js';
|
|
4
|
+
import { UpdateQueryNode } from '../../operation-node/update-query-node.js';
|
|
4
5
|
export declare class DeduplicateJoinsTransformer extends OperationNodeTransformer {
|
|
5
6
|
#private;
|
|
6
7
|
protected transformSelectQuery(node: SelectQueryNode): SelectQueryNode;
|
|
@@ -46,7 +46,13 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* Operator can be any supported operator or if the typings don't support it
|
|
49
|
-
* you can always use
|
|
49
|
+
* you can always use
|
|
50
|
+
*
|
|
51
|
+
* ```ts
|
|
52
|
+
* sql`your operator`
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* The next example uses the `>` operator:
|
|
50
56
|
*
|
|
51
57
|
* ```ts
|
|
52
58
|
* const persons = await db
|
|
@@ -62,8 +68,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
62
68
|
* select * from "person" where "id" > $1
|
|
63
69
|
* ```
|
|
64
70
|
*
|
|
65
|
-
*
|
|
66
|
-
* conditional
|
|
71
|
+
* `where` methods don't change the type of the query. You can add
|
|
72
|
+
* conditional statements easily by doing something like this:
|
|
67
73
|
*
|
|
68
74
|
* ```ts
|
|
69
75
|
* let query = db
|
|
@@ -71,6 +77,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
71
77
|
* .selectAll()
|
|
72
78
|
*
|
|
73
79
|
* if (firstName) {
|
|
80
|
+
* // The query builder is immutable. Remember to reassign
|
|
81
|
+
* // the result back to the query variable.
|
|
74
82
|
* query = query.where('first_name', '=', firstName)
|
|
75
83
|
* }
|
|
76
84
|
*
|
|
@@ -78,8 +86,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
78
86
|
* ```
|
|
79
87
|
*
|
|
80
88
|
* This is true for basically all methods execpt the `select` and
|
|
81
|
-
* `returning
|
|
82
|
-
* query.
|
|
89
|
+
* `returning`, that __do__ change the return type of the query.
|
|
83
90
|
*
|
|
84
91
|
* Both the first and third argument can also be subqueries.
|
|
85
92
|
* A subquery is defined by passing a function and calling
|
|
@@ -3,7 +3,7 @@ import { TableExpression, TableExpressionDatabase, TableExpressionTables } from
|
|
|
3
3
|
import { FunctionBuilder } from './function-builder.js';
|
|
4
4
|
import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
5
5
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
6
|
-
import { QueryExecutor } from '../
|
|
6
|
+
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
7
7
|
export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
8
8
|
#private;
|
|
9
9
|
constructor(props: ExpressionBuilderProps);
|
|
@@ -9,8 +9,8 @@ const query_id_js_1 = require("../util/query-id.js");
|
|
|
9
9
|
const function_builder_js_1 = require("./function-builder.js");
|
|
10
10
|
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
11
11
|
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
12
|
-
const index_nodeless_js_1 = require("../index-nodeless.js");
|
|
13
12
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
13
|
+
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
14
14
|
class ExpressionBuilder {
|
|
15
15
|
#props;
|
|
16
16
|
constructor(props) {
|
|
@@ -100,7 +100,7 @@ class ExpressionBuilder {
|
|
|
100
100
|
return new raw_builder_js_1.RawBuilder({
|
|
101
101
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
102
102
|
plugins: this.#props.executor.plugins,
|
|
103
|
-
rawNode:
|
|
103
|
+
rawNode: raw_node_js_1.RawNode.createWithChild((0, reference_parser_js_1.parseStringReference)(reference)),
|
|
104
104
|
});
|
|
105
105
|
}
|
|
106
106
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FunctionBuilder = void 0;
|
|
4
|
-
const
|
|
4
|
+
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
5
5
|
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
6
6
|
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
7
7
|
const query_id_js_1 = require("../util/query-id.js");
|
|
@@ -153,7 +153,7 @@ class FunctionBuilder {
|
|
|
153
153
|
#oneArgFunction(fn, column) {
|
|
154
154
|
return new raw_builder_js_1.RawBuilder({
|
|
155
155
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
156
|
-
rawNode:
|
|
156
|
+
rawNode: raw_node_js_1.RawNode.create([`${fn}(`, ')'], [(0, reference_parser_js_1.parseStringReference)(column)]),
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
159
|
}
|
|
@@ -382,7 +382,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
382
382
|
* .onDuplicateKeyUpdate({ species: 'hamster' })
|
|
383
383
|
* ```
|
|
384
384
|
*/
|
|
385
|
-
onDuplicateKeyUpdate(updates: MutationObject<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
385
|
+
onDuplicateKeyUpdate(updates: MutationObject<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
386
386
|
/**
|
|
387
387
|
* Allows you to return data from modified rows.
|
|
388
388
|
*
|
|
@@ -69,7 +69,13 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
69
69
|
* ```
|
|
70
70
|
*
|
|
71
71
|
* Operator can be any supported operator or if the typings don't support it
|
|
72
|
-
* you can always use
|
|
72
|
+
* you can always use
|
|
73
|
+
*
|
|
74
|
+
* ```ts
|
|
75
|
+
* sql`your operator`
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* The next example uses the `>` operator:
|
|
73
79
|
*
|
|
74
80
|
* ```ts
|
|
75
81
|
* const persons = await db
|
|
@@ -85,8 +91,8 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
85
91
|
* select * from "person" where "id" > $1
|
|
86
92
|
* ```
|
|
87
93
|
*
|
|
88
|
-
*
|
|
89
|
-
* conditional
|
|
94
|
+
* `where` methods don't change the type of the query. You can add
|
|
95
|
+
* conditional statements easily by doing something like this:
|
|
90
96
|
*
|
|
91
97
|
* ```ts
|
|
92
98
|
* let query = db
|
|
@@ -94,6 +100,8 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
94
100
|
* .selectAll()
|
|
95
101
|
*
|
|
96
102
|
* if (firstName) {
|
|
103
|
+
* // The query builder is immutable. Remember to reassign
|
|
104
|
+
* // the result back to the query variable.
|
|
97
105
|
* query = query.where('first_name', '=', firstName)
|
|
98
106
|
* }
|
|
99
107
|
*
|
|
@@ -101,8 +109,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
101
109
|
* ```
|
|
102
110
|
*
|
|
103
111
|
* This is true for basically all methods execpt the `select` and
|
|
104
|
-
* `returning
|
|
105
|
-
* query.
|
|
112
|
+
* `returning`, that __do__ change the return type of the query.
|
|
106
113
|
*
|
|
107
114
|
* Both the first and third argument can also be subqueries.
|
|
108
115
|
* A subquery is defined by passing a function and calling
|
|
@@ -379,7 +386,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
379
386
|
* do update set "first_name" = $3
|
|
380
387
|
* ```
|
|
381
388
|
*/
|
|
382
|
-
doUpdateSet(updates: MutationObject<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|
389
|
+
doUpdateSet(updates: MutationObject<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|
383
390
|
}
|
|
384
391
|
export interface OnConflictBuilderProps {
|
|
385
392
|
readonly onConflictNode: OnConflictNode;
|
|
@@ -426,7 +433,13 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
426
433
|
* ```
|
|
427
434
|
*
|
|
428
435
|
* Operator can be any supported operator or if the typings don't support it
|
|
429
|
-
* you can always use
|
|
436
|
+
* you can always use
|
|
437
|
+
*
|
|
438
|
+
* ```ts
|
|
439
|
+
* sql`your operator`
|
|
440
|
+
* ```
|
|
441
|
+
*
|
|
442
|
+
* The next example uses the `>` operator:
|
|
430
443
|
*
|
|
431
444
|
* ```ts
|
|
432
445
|
* const persons = await db
|
|
@@ -442,8 +455,8 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
442
455
|
* select * from "person" where "id" > $1
|
|
443
456
|
* ```
|
|
444
457
|
*
|
|
445
|
-
*
|
|
446
|
-
* conditional
|
|
458
|
+
* `where` methods don't change the type of the query. You can add
|
|
459
|
+
* conditional statements easily by doing something like this:
|
|
447
460
|
*
|
|
448
461
|
* ```ts
|
|
449
462
|
* let query = db
|
|
@@ -451,6 +464,8 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
451
464
|
* .selectAll()
|
|
452
465
|
*
|
|
453
466
|
* if (firstName) {
|
|
467
|
+
* // The query builder is immutable. Remember to reassign
|
|
468
|
+
* // the result back to the query variable.
|
|
454
469
|
* query = query.where('first_name', '=', firstName)
|
|
455
470
|
* }
|
|
456
471
|
*
|
|
@@ -458,8 +473,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
458
473
|
* ```
|
|
459
474
|
*
|
|
460
475
|
* This is true for basically all methods execpt the `select` and
|
|
461
|
-
* `returning
|
|
462
|
-
* query.
|
|
476
|
+
* `returning`, that __do__ change the return type of the query.
|
|
463
477
|
*
|
|
464
478
|
* Both the first and third argument can also be subqueries.
|
|
465
479
|
* A subquery is defined by passing a function and calling
|
|
@@ -45,7 +45,13 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
45
45
|
* ```
|
|
46
46
|
*
|
|
47
47
|
* Operator can be any supported operator or if the typings don't support it
|
|
48
|
-
* you can always use
|
|
48
|
+
* you can always use
|
|
49
|
+
*
|
|
50
|
+
* ```ts
|
|
51
|
+
* sql`your operator`
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* The next example uses the `>` operator:
|
|
49
55
|
*
|
|
50
56
|
* ```ts
|
|
51
57
|
* const persons = await db
|
|
@@ -61,8 +67,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
61
67
|
* select * from "person" where "id" > $1
|
|
62
68
|
* ```
|
|
63
69
|
*
|
|
64
|
-
*
|
|
65
|
-
* conditional
|
|
70
|
+
* `where` methods don't change the type of the query. You can add
|
|
71
|
+
* conditional statements easily by doing something like this:
|
|
66
72
|
*
|
|
67
73
|
* ```ts
|
|
68
74
|
* let query = db
|
|
@@ -70,6 +76,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
70
76
|
* .selectAll()
|
|
71
77
|
*
|
|
72
78
|
* if (firstName) {
|
|
79
|
+
* // The query builder is immutable. Remember to reassign
|
|
80
|
+
* // the result back to the query variable.
|
|
73
81
|
* query = query.where('first_name', '=', firstName)
|
|
74
82
|
* }
|
|
75
83
|
*
|
|
@@ -77,8 +85,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
77
85
|
* ```
|
|
78
86
|
*
|
|
79
87
|
* This is true for basically all methods execpt the `select` and
|
|
80
|
-
* `returning
|
|
81
|
-
* query.
|
|
88
|
+
* `returning`, that __do__ change the return type of the query.
|
|
82
89
|
*
|
|
83
90
|
* Both the first and third argument can also be subqueries.
|
|
84
91
|
* A subquery is defined by passing a function and calling
|
|
@@ -1205,7 +1212,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1205
1212
|
* ### Examples
|
|
1206
1213
|
*
|
|
1207
1214
|
* ```ts
|
|
1208
|
-
* await db.selectFrom('pet')
|
|
1215
|
+
* const pets = await db.selectFrom('pet')
|
|
1209
1216
|
* .selectAll('pet')
|
|
1210
1217
|
* .select(
|
|
1211
1218
|
* (qb) => qb.selectFrom('person')
|
|
@@ -1214,6 +1221,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1214
1221
|
* .as('owner_first_name')
|
|
1215
1222
|
* )
|
|
1216
1223
|
* .execute()
|
|
1224
|
+
*
|
|
1225
|
+
* pets[0].owner_first_name
|
|
1217
1226
|
* ```
|
|
1218
1227
|
*/
|
|
1219
1228
|
as<A extends string>(alias: A): AliasedQueryBuilder<DB, TB, O, A>;
|
|
@@ -15,6 +15,7 @@ const object_utils_js_1 = require("../util/object-utils.js");
|
|
|
15
15
|
const group_by_parser_js_1 = require("../parser/group-by-parser.js");
|
|
16
16
|
const union_parser_js_1 = require("../parser/union-parser.js");
|
|
17
17
|
const no_result_error_js_1 = require("./no-result-error.js");
|
|
18
|
+
const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
18
19
|
class SelectQueryBuilder {
|
|
19
20
|
#props;
|
|
20
21
|
constructor(props) {
|
|
@@ -515,7 +516,7 @@ class SelectQueryBuilder {
|
|
|
515
516
|
* ### Examples
|
|
516
517
|
*
|
|
517
518
|
* ```ts
|
|
518
|
-
* await db.selectFrom('pet')
|
|
519
|
+
* const pets = await db.selectFrom('pet')
|
|
519
520
|
* .selectAll('pet')
|
|
520
521
|
* .select(
|
|
521
522
|
* (qb) => qb.selectFrom('person')
|
|
@@ -524,6 +525,8 @@ class SelectQueryBuilder {
|
|
|
524
525
|
* .as('owner_first_name')
|
|
525
526
|
* )
|
|
526
527
|
* .execute()
|
|
528
|
+
*
|
|
529
|
+
* pets[0].owner_first_name
|
|
527
530
|
* ```
|
|
528
531
|
*/
|
|
529
532
|
as(alias) {
|
|
@@ -613,10 +616,7 @@ class AliasedQueryBuilder {
|
|
|
613
616
|
}
|
|
614
617
|
toOperationNode() {
|
|
615
618
|
const node = this.#queryBuilder.toOperationNode();
|
|
616
|
-
|
|
617
|
-
return alias_node_js_1.AliasNode.create(node, this.#alias);
|
|
618
|
-
}
|
|
619
|
-
throw new Error('only select queries can be aliased');
|
|
619
|
+
return alias_node_js_1.AliasNode.create(node, identifier_node_js_1.IdentifierNode.create(this.#alias));
|
|
620
620
|
}
|
|
621
621
|
}
|
|
622
622
|
exports.AliasedQueryBuilder = AliasedQueryBuilder;
|