kysely 0.16.11 → 0.17.2
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 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +3 -4
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +19 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-adapter.js +3 -2
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/cjs/driver/connection-provider.d.ts +1 -1
- 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/index-nodeless.d.ts +2 -0
- package/dist/cjs/index-nodeless.js +2 -0
- package/dist/cjs/kysely.d.ts +3 -6
- package/dist/cjs/kysely.js +30 -41
- package/dist/cjs/migration/migrator.js +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.js +1 -1
- package/dist/cjs/operation-node/raw-node.d.ts +4 -2
- package/dist/cjs/operation-node/raw-node.js +8 -2
- package/dist/cjs/parser/complex-expression-parser.d.ts +5 -5
- package/dist/cjs/parser/complex-expression-parser.js +5 -4
- package/dist/cjs/parser/filter-parser.d.ts +9 -9
- package/dist/cjs/parser/filter-parser.js +31 -30
- package/dist/cjs/parser/group-by-parser.d.ts +1 -2
- package/dist/cjs/parser/group-by-parser.js +2 -2
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -2
- package/dist/cjs/parser/insert-values-parser.js +6 -6
- package/dist/cjs/parser/join-parser.d.ts +1 -2
- package/dist/cjs/parser/join-parser.js +8 -7
- package/dist/cjs/parser/order-by-parser.d.ts +1 -2
- package/dist/cjs/parser/order-by-parser.js +4 -4
- package/dist/cjs/parser/parse-utils.d.ts +10 -0
- package/dist/cjs/parser/parse-utils.js +38 -0
- package/dist/cjs/parser/reference-parser.d.ts +2 -3
- package/dist/cjs/parser/reference-parser.js +5 -5
- package/dist/cjs/parser/select-parser.d.ts +1 -2
- package/dist/cjs/parser/select-parser.js +5 -5
- package/dist/cjs/parser/table-parser.d.ts +2 -3
- package/dist/cjs/parser/table-parser.js +5 -5
- package/dist/cjs/parser/update-set-parser.d.ts +1 -2
- package/dist/cjs/parser/update-set-parser.js +2 -2
- package/dist/cjs/parser/value-parser.d.ts +3 -4
- package/dist/cjs/parser/value-parser.js +7 -7
- package/dist/cjs/parser/with-parser.d.ts +1 -2
- package/dist/cjs/parser/with-parser.js +3 -2
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
- package/dist/cjs/query-builder/delete-query-builder.d.ts +34 -23
- package/dist/cjs/query-builder/delete-query-builder.js +15 -15
- package/dist/cjs/query-builder/expression-builder.d.ts +4 -13
- package/dist/cjs/query-builder/expression-builder.js +12 -21
- package/dist/cjs/query-builder/function-builder.d.ts +2 -6
- package/dist/cjs/query-builder/function-builder.js +5 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +12 -8
- package/dist/cjs/query-builder/insert-query-builder.js +8 -7
- package/dist/cjs/query-builder/join-builder.d.ts +0 -2
- package/dist/cjs/query-builder/join-builder.js +8 -8
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +46 -28
- package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
- package/dist/cjs/query-builder/returning-interface.d.ts +3 -1
- package/dist/cjs/query-builder/select-query-builder.d.ts +52 -33
- package/dist/cjs/query-builder/select-query-builder.js +28 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +41 -28
- package/dist/cjs/query-builder/update-query-builder.js +22 -20
- package/dist/cjs/query-builder/where-interface.d.ts +31 -20
- package/dist/cjs/query-compiler/default-query-compiler.js +1 -1
- package/dist/cjs/query-creator.d.ts +10 -129
- package/dist/cjs/query-creator.js +5 -136
- package/dist/cjs/query-executor/default-query-executor.d.ts +21 -7
- package/dist/cjs/query-executor/default-query-executor.js +17 -19
- package/dist/cjs/query-executor/noop-query-executor.d.ts +20 -6
- package/dist/cjs/query-executor/noop-query-executor.js +11 -4
- 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-provider.d.ts +8 -0
- package/dist/cjs/query-executor/query-executor-provider.js +2 -0
- package/dist/cjs/query-executor/query-executor.d.ts +20 -13
- package/dist/cjs/query-executor/query-executor.js +0 -57
- package/dist/cjs/raw-builder/raw-builder.d.ts +42 -11
- package/dist/cjs/raw-builder/raw-builder.js +55 -56
- package/dist/cjs/raw-builder/sql.d.ts +331 -0
- package/dist/cjs/raw-builder/sql.js +161 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +42 -8
- package/dist/cjs/schema/alter-table-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.d.ts +22 -8
- package/dist/cjs/schema/create-index-builder.d.ts +3 -1
- package/dist/cjs/schema/create-index-builder.js +3 -1
- package/dist/cjs/schema/create-table-builder.d.ts +7 -3
- package/dist/cjs/schema/create-table-builder.js +7 -3
- package/dist/cjs/schema/create-view-builder.d.ts +3 -3
- package/dist/cjs/schema/create-view-builder.js +3 -3
- package/dist/cjs/util/query-id.js +10 -4
- package/dist/cjs/util/random-string.js +65 -2
- package/dist/cjs/util/type-utils.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-adapter.js +3 -4
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +19 -0
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -1
- package/dist/esm/dialect/postgres/postgres-adapter.js +3 -2
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/esm/driver/connection-provider.d.ts +1 -1
- 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/index-nodeless.d.ts +2 -0
- package/dist/esm/index-nodeless.js +2 -0
- package/dist/esm/kysely.d.ts +3 -6
- package/dist/esm/kysely.js +30 -41
- package/dist/esm/migration/migrator.js +4 -4
- package/dist/esm/operation-node/operation-node-transformer.js +1 -1
- package/dist/esm/operation-node/raw-node.d.ts +4 -2
- package/dist/esm/operation-node/raw-node.js +8 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +5 -5
- package/dist/esm/parser/complex-expression-parser.js +5 -4
- package/dist/esm/parser/filter-parser.d.ts +9 -9
- package/dist/esm/parser/filter-parser.js +31 -30
- package/dist/esm/parser/group-by-parser.d.ts +1 -2
- package/dist/esm/parser/group-by-parser.js +2 -2
- package/dist/esm/parser/insert-values-parser.d.ts +1 -2
- package/dist/esm/parser/insert-values-parser.js +6 -6
- package/dist/esm/parser/join-parser.d.ts +1 -2
- package/dist/esm/parser/join-parser.js +8 -7
- package/dist/esm/parser/order-by-parser.d.ts +1 -2
- package/dist/esm/parser/order-by-parser.js +4 -4
- package/dist/esm/parser/parse-utils.d.ts +10 -0
- package/dist/esm/parser/parse-utils.js +32 -0
- package/dist/esm/parser/reference-parser.d.ts +2 -3
- package/dist/esm/parser/reference-parser.js +5 -5
- package/dist/esm/parser/select-parser.d.ts +1 -2
- package/dist/esm/parser/select-parser.js +5 -5
- package/dist/esm/parser/table-parser.d.ts +2 -3
- package/dist/esm/parser/table-parser.js +5 -5
- package/dist/esm/parser/update-set-parser.d.ts +1 -2
- package/dist/esm/parser/update-set-parser.js +2 -2
- package/dist/esm/parser/value-parser.d.ts +3 -4
- package/dist/esm/parser/value-parser.js +7 -7
- package/dist/esm/parser/with-parser.d.ts +1 -2
- package/dist/esm/parser/with-parser.js +3 -2
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
- package/dist/esm/query-builder/delete-query-builder.d.ts +34 -23
- package/dist/esm/query-builder/delete-query-builder.js +15 -15
- package/dist/esm/query-builder/expression-builder.d.ts +4 -13
- package/dist/esm/query-builder/expression-builder.js +12 -21
- package/dist/esm/query-builder/function-builder.d.ts +2 -6
- package/dist/esm/query-builder/function-builder.js +5 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +12 -8
- package/dist/esm/query-builder/insert-query-builder.js +8 -7
- package/dist/esm/query-builder/join-builder.d.ts +0 -2
- package/dist/esm/query-builder/join-builder.js +8 -8
- package/dist/esm/query-builder/on-conflict-builder.d.ts +46 -28
- package/dist/esm/query-builder/on-conflict-builder.js +17 -17
- package/dist/esm/query-builder/returning-interface.d.ts +3 -1
- package/dist/esm/query-builder/select-query-builder.d.ts +52 -33
- package/dist/esm/query-builder/select-query-builder.js +28 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +41 -28
- package/dist/esm/query-builder/update-query-builder.js +22 -20
- package/dist/esm/query-builder/where-interface.d.ts +31 -20
- package/dist/esm/query-compiler/default-query-compiler.js +1 -1
- package/dist/esm/query-creator.d.ts +10 -129
- package/dist/esm/query-creator.js +5 -136
- package/dist/esm/query-executor/default-query-executor.d.ts +21 -7
- package/dist/esm/query-executor/default-query-executor.js +17 -19
- package/dist/esm/query-executor/noop-query-executor.d.ts +20 -6
- package/dist/esm/query-executor/noop-query-executor.js +10 -3
- 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-provider.d.ts +8 -0
- package/dist/esm/query-executor/query-executor-provider.js +2 -0
- package/dist/esm/query-executor/query-executor.d.ts +20 -13
- package/dist/esm/query-executor/query-executor.js +1 -55
- package/dist/esm/raw-builder/raw-builder.d.ts +42 -11
- package/dist/esm/raw-builder/raw-builder.js +56 -57
- package/dist/esm/raw-builder/sql.d.ts +331 -0
- package/dist/esm/raw-builder/sql.js +159 -0
- package/dist/esm/schema/alter-table-builder.d.ts +42 -8
- package/dist/esm/schema/alter-table-builder.js +20 -0
- package/dist/esm/schema/column-definition-builder.d.ts +22 -8
- package/dist/esm/schema/create-index-builder.d.ts +3 -1
- package/dist/esm/schema/create-index-builder.js +3 -1
- package/dist/esm/schema/create-table-builder.d.ts +7 -3
- package/dist/esm/schema/create-table-builder.js +7 -3
- package/dist/esm/schema/create-view-builder.d.ts +3 -3
- package/dist/esm/schema/create-view-builder.js +3 -3
- package/dist/esm/util/query-id.js +10 -4
- package/dist/esm/util/random-string.js +65 -2
- package/dist/esm/util/type-utils.d.ts +1 -1
- package/package.json +14 -14
- package/dist/cjs/parser/parse-context.d.ts +0 -55
- package/dist/cjs/parser/parse-context.js +0 -50
- package/dist/cjs/util/private-symbols.d.ts +0 -5
- package/dist/cjs/util/private-symbols.js +0 -8
- package/dist/esm/parser/parse-context.d.ts +0 -55
- package/dist/esm/parser/parse-context.js +0 -47
- package/dist/esm/util/private-symbols.d.ts +0 -5
- package/dist/esm/util/private-symbols.js +0 -6
|
@@ -13,13 +13,13 @@ class JoinBuilder {
|
|
|
13
13
|
on(...args) {
|
|
14
14
|
return new JoinBuilder({
|
|
15
15
|
...this.#props,
|
|
16
|
-
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseOnFilter)(
|
|
16
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseOnFilter)(args)),
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
orOn(...args) {
|
|
20
20
|
return new JoinBuilder({
|
|
21
21
|
...this.#props,
|
|
22
|
-
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseOnFilter)(
|
|
22
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseOnFilter)(args)),
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
@@ -31,7 +31,7 @@ class JoinBuilder {
|
|
|
31
31
|
onRef(lhs, op, rhs) {
|
|
32
32
|
return new JoinBuilder({
|
|
33
33
|
...this.#props,
|
|
34
|
-
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseReferenceFilter)(
|
|
34
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
@@ -43,7 +43,7 @@ class JoinBuilder {
|
|
|
43
43
|
orOnRef(lhs, op, rhs) {
|
|
44
44
|
return new JoinBuilder({
|
|
45
45
|
...this.#props,
|
|
46
|
-
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseReferenceFilter)(
|
|
46
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
@@ -55,7 +55,7 @@ class JoinBuilder {
|
|
|
55
55
|
onExists(arg) {
|
|
56
56
|
return new JoinBuilder({
|
|
57
57
|
...this.#props,
|
|
58
|
-
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseExistFilter)(
|
|
58
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
@@ -67,7 +67,7 @@ class JoinBuilder {
|
|
|
67
67
|
onNotExists(arg) {
|
|
68
68
|
return new JoinBuilder({
|
|
69
69
|
...this.#props,
|
|
70
|
-
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(
|
|
70
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
@@ -79,7 +79,7 @@ class JoinBuilder {
|
|
|
79
79
|
orOnExists(arg) {
|
|
80
80
|
return new JoinBuilder({
|
|
81
81
|
...this.#props,
|
|
82
|
-
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseExistFilter)(
|
|
82
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
@@ -91,7 +91,7 @@ class JoinBuilder {
|
|
|
91
91
|
orOnNotExists(arg) {
|
|
92
92
|
return new JoinBuilder({
|
|
93
93
|
...this.#props,
|
|
94
|
-
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(
|
|
94
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
toOperationNode() {
|
|
@@ -2,7 +2,6 @@ import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|
|
2
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
3
|
import { ComplexExpression } from '../parser/complex-expression-parser.js';
|
|
4
4
|
import { WhereGrouper, FilterOperator, FilterValueExpressionOrList } from '../parser/filter-parser.js';
|
|
5
|
-
import { ParseContext } from '../parser/parse-context.js';
|
|
6
5
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
7
6
|
import { MutationObject } from '../parser/update-set-parser.js';
|
|
8
7
|
import { AnyColumn, AnyRawBuilder } from '../util/type-utils.js';
|
|
@@ -70,7 +69,13 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
70
69
|
* ```
|
|
71
70
|
*
|
|
72
71
|
* Operator can be any supported operator or if the typings don't support it
|
|
73
|
-
* 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:
|
|
74
79
|
*
|
|
75
80
|
* ```ts
|
|
76
81
|
* const persons = await db
|
|
@@ -86,8 +91,8 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
86
91
|
* select * from "person" where "id" > $1
|
|
87
92
|
* ```
|
|
88
93
|
*
|
|
89
|
-
*
|
|
90
|
-
* conditional
|
|
94
|
+
* `where` methods don't change the type of the query. You can add
|
|
95
|
+
* conditional statements easily by doing something like this:
|
|
91
96
|
*
|
|
92
97
|
* ```ts
|
|
93
98
|
* let query = db
|
|
@@ -95,6 +100,8 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
95
100
|
* .selectAll()
|
|
96
101
|
*
|
|
97
102
|
* if (firstName) {
|
|
103
|
+
* // The query builder is immutable. Remember to reassign
|
|
104
|
+
* // the result back to the query variable.
|
|
98
105
|
* query = query.where('first_name', '=', firstName)
|
|
99
106
|
* }
|
|
100
107
|
*
|
|
@@ -102,8 +109,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
102
109
|
* ```
|
|
103
110
|
*
|
|
104
111
|
* This is true for basically all methods execpt the `select` and
|
|
105
|
-
* `returning
|
|
106
|
-
* query.
|
|
112
|
+
* `returning`, that __do__ change the return type of the query.
|
|
107
113
|
*
|
|
108
114
|
* Both the first and third argument can also be subqueries.
|
|
109
115
|
* A subquery is defined by passing a function and calling
|
|
@@ -140,7 +146,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
140
146
|
*
|
|
141
147
|
* A `where in` query can be built by using the `in` operator and an array
|
|
142
148
|
* of values. The values in the array can also be subqueries or raw
|
|
143
|
-
*
|
|
149
|
+
* {@link sql} expressions.
|
|
144
150
|
*
|
|
145
151
|
* ```ts
|
|
146
152
|
* const persons = await db
|
|
@@ -156,15 +162,17 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
156
162
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
157
163
|
* ```
|
|
158
164
|
*
|
|
159
|
-
* If everything else fails, you can always
|
|
165
|
+
* If everything else fails, you can always use the {@link sql} tag
|
|
160
166
|
* as any of the arguments, including the operator:
|
|
161
167
|
*
|
|
162
168
|
* ```ts
|
|
169
|
+
* import { sql } from 'kysely'
|
|
170
|
+
*
|
|
163
171
|
* const persons = await db
|
|
164
172
|
* .selectFrom('person')
|
|
165
173
|
* .selectAll()
|
|
166
174
|
* .where(
|
|
167
|
-
*
|
|
175
|
+
* sql`coalesce(first_name, last_name)`,
|
|
168
176
|
* 'like',
|
|
169
177
|
* '%' + name + '%',
|
|
170
178
|
* )
|
|
@@ -199,24 +207,25 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
199
207
|
* ```
|
|
200
208
|
*
|
|
201
209
|
* In all examples above the columns were known at compile time
|
|
202
|
-
* (except for the
|
|
203
|
-
* you to refer to columns that exist in the database **and**
|
|
204
|
-
* referred to in the current query and context.
|
|
210
|
+
* (except for the raw {@link sql} expressions). By default kysely only
|
|
211
|
+
* allows you to refer to columns that exist in the database **and**
|
|
212
|
+
* can be referred to in the current query and context.
|
|
205
213
|
*
|
|
206
214
|
* Sometimes you may want to refer to columns that come from the user
|
|
207
215
|
* input and thus are not available at compile time.
|
|
208
216
|
*
|
|
209
|
-
* You have two options,
|
|
217
|
+
* You have two options, the {@link sql} tag or `db.dynamic`. The example below
|
|
210
218
|
* uses both:
|
|
211
219
|
*
|
|
212
220
|
* ```ts
|
|
221
|
+
* import { sql } from 'kysely'
|
|
213
222
|
* const { ref } = db.dynamic
|
|
214
223
|
*
|
|
215
224
|
* const persons = await db
|
|
216
225
|
* .selectFrom('person')
|
|
217
226
|
* .selectAll()
|
|
218
227
|
* .where(ref(columnFromUserInput), '=', 1)
|
|
219
|
-
* .orWhere(
|
|
228
|
+
* .orWhere(sql.id(columnFromUserInput), '=', 2)
|
|
220
229
|
* .execute()
|
|
221
230
|
* ```
|
|
222
231
|
*/
|
|
@@ -381,7 +390,6 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
381
390
|
}
|
|
382
391
|
export interface OnConflictBuilderProps {
|
|
383
392
|
readonly onConflictNode: OnConflictNode;
|
|
384
|
-
readonly parseContext: ParseContext;
|
|
385
393
|
}
|
|
386
394
|
export declare type OnConflictDatabase<DB, TB extends keyof DB> = {
|
|
387
395
|
[K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
|
|
@@ -425,7 +433,13 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
425
433
|
* ```
|
|
426
434
|
*
|
|
427
435
|
* Operator can be any supported operator or if the typings don't support it
|
|
428
|
-
* 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:
|
|
429
443
|
*
|
|
430
444
|
* ```ts
|
|
431
445
|
* const persons = await db
|
|
@@ -441,8 +455,8 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
441
455
|
* select * from "person" where "id" > $1
|
|
442
456
|
* ```
|
|
443
457
|
*
|
|
444
|
-
*
|
|
445
|
-
* conditional
|
|
458
|
+
* `where` methods don't change the type of the query. You can add
|
|
459
|
+
* conditional statements easily by doing something like this:
|
|
446
460
|
*
|
|
447
461
|
* ```ts
|
|
448
462
|
* let query = db
|
|
@@ -450,6 +464,8 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
450
464
|
* .selectAll()
|
|
451
465
|
*
|
|
452
466
|
* if (firstName) {
|
|
467
|
+
* // The query builder is immutable. Remember to reassign
|
|
468
|
+
* // the result back to the query variable.
|
|
453
469
|
* query = query.where('first_name', '=', firstName)
|
|
454
470
|
* }
|
|
455
471
|
*
|
|
@@ -457,8 +473,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
457
473
|
* ```
|
|
458
474
|
*
|
|
459
475
|
* This is true for basically all methods execpt the `select` and
|
|
460
|
-
* `returning
|
|
461
|
-
* query.
|
|
476
|
+
* `returning`, that __do__ change the return type of the query.
|
|
462
477
|
*
|
|
463
478
|
* Both the first and third argument can also be subqueries.
|
|
464
479
|
* A subquery is defined by passing a function and calling
|
|
@@ -495,7 +510,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
495
510
|
*
|
|
496
511
|
* A `where in` query can be built by using the `in` operator and an array
|
|
497
512
|
* of values. The values in the array can also be subqueries or raw
|
|
498
|
-
*
|
|
513
|
+
* {@link sql} expressions.
|
|
499
514
|
*
|
|
500
515
|
* ```ts
|
|
501
516
|
* const persons = await db
|
|
@@ -511,15 +526,17 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
511
526
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
512
527
|
* ```
|
|
513
528
|
*
|
|
514
|
-
* If everything else fails, you can always
|
|
529
|
+
* If everything else fails, you can always use the {@link sql} tag
|
|
515
530
|
* as any of the arguments, including the operator:
|
|
516
531
|
*
|
|
517
532
|
* ```ts
|
|
533
|
+
* import { sql } from 'kysely'
|
|
534
|
+
*
|
|
518
535
|
* const persons = await db
|
|
519
536
|
* .selectFrom('person')
|
|
520
537
|
* .selectAll()
|
|
521
538
|
* .where(
|
|
522
|
-
*
|
|
539
|
+
* sql`coalesce(first_name, last_name)`,
|
|
523
540
|
* 'like',
|
|
524
541
|
* '%' + name + '%',
|
|
525
542
|
* )
|
|
@@ -554,24 +571,25 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
554
571
|
* ```
|
|
555
572
|
*
|
|
556
573
|
* In all examples above the columns were known at compile time
|
|
557
|
-
* (except for the
|
|
558
|
-
* you to refer to columns that exist in the database **and**
|
|
559
|
-
* referred to in the current query and context.
|
|
574
|
+
* (except for the raw {@link sql} expressions). By default kysely only
|
|
575
|
+
* allows you to refer to columns that exist in the database **and**
|
|
576
|
+
* can be referred to in the current query and context.
|
|
560
577
|
*
|
|
561
578
|
* Sometimes you may want to refer to columns that come from the user
|
|
562
579
|
* input and thus are not available at compile time.
|
|
563
580
|
*
|
|
564
|
-
* You have two options,
|
|
581
|
+
* You have two options, the {@link sql} tag or `db.dynamic`. The example below
|
|
565
582
|
* uses both:
|
|
566
583
|
*
|
|
567
584
|
* ```ts
|
|
585
|
+
* import { sql } from 'kysely'
|
|
568
586
|
* const { ref } = db.dynamic
|
|
569
587
|
*
|
|
570
588
|
* const persons = await db
|
|
571
589
|
* .selectFrom('person')
|
|
572
590
|
* .selectAll()
|
|
573
591
|
* .where(ref(columnFromUserInput), '=', 1)
|
|
574
|
-
* .orWhere(
|
|
592
|
+
* .orWhere(sql.id(columnFromUserInput), '=', 2)
|
|
575
593
|
* .execute()
|
|
576
594
|
* ```
|
|
577
595
|
*/
|
|
@@ -80,7 +80,7 @@ class OnConflictBuilder {
|
|
|
80
80
|
where(...args) {
|
|
81
81
|
return new OnConflictBuilder({
|
|
82
82
|
...this.#props,
|
|
83
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(
|
|
83
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
@@ -91,13 +91,13 @@ class OnConflictBuilder {
|
|
|
91
91
|
whereRef(lhs, op, rhs) {
|
|
92
92
|
return new OnConflictBuilder({
|
|
93
93
|
...this.#props,
|
|
94
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(
|
|
94
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
orWhere(...args) {
|
|
98
98
|
return new OnConflictBuilder({
|
|
99
99
|
...this.#props,
|
|
100
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(
|
|
100
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
@@ -108,7 +108,7 @@ class OnConflictBuilder {
|
|
|
108
108
|
orWhereRef(lhs, op, rhs) {
|
|
109
109
|
return new OnConflictBuilder({
|
|
110
110
|
...this.#props,
|
|
111
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(
|
|
111
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
@@ -119,7 +119,7 @@ class OnConflictBuilder {
|
|
|
119
119
|
whereExists(arg) {
|
|
120
120
|
return new OnConflictBuilder({
|
|
121
121
|
...this.#props,
|
|
122
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(
|
|
122
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
|
|
123
123
|
});
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
@@ -130,7 +130,7 @@ class OnConflictBuilder {
|
|
|
130
130
|
whereNotExists(arg) {
|
|
131
131
|
return new OnConflictBuilder({
|
|
132
132
|
...this.#props,
|
|
133
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(
|
|
133
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
136
|
/**
|
|
@@ -141,7 +141,7 @@ class OnConflictBuilder {
|
|
|
141
141
|
orWhereExists(arg) {
|
|
142
142
|
return new OnConflictBuilder({
|
|
143
143
|
...this.#props,
|
|
144
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(
|
|
144
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
|
|
145
145
|
});
|
|
146
146
|
}
|
|
147
147
|
/**
|
|
@@ -152,7 +152,7 @@ class OnConflictBuilder {
|
|
|
152
152
|
orWhereNotExists(arg) {
|
|
153
153
|
return new OnConflictBuilder({
|
|
154
154
|
...this.#props,
|
|
155
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(
|
|
155
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
158
|
/**
|
|
@@ -214,7 +214,7 @@ class OnConflictBuilder {
|
|
|
214
214
|
return new OnConflictUpdateBuilder({
|
|
215
215
|
...this.#props,
|
|
216
216
|
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
217
|
-
updates: (0, update_set_parser_js_1.parseUpdateObject)(
|
|
217
|
+
updates: (0, update_set_parser_js_1.parseUpdateObject)(updates),
|
|
218
218
|
}),
|
|
219
219
|
});
|
|
220
220
|
}
|
|
@@ -240,7 +240,7 @@ class OnConflictUpdateBuilder {
|
|
|
240
240
|
where(...args) {
|
|
241
241
|
return new OnConflictUpdateBuilder({
|
|
242
242
|
...this.#props,
|
|
243
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(
|
|
243
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
|
|
244
244
|
});
|
|
245
245
|
}
|
|
246
246
|
/**
|
|
@@ -251,13 +251,13 @@ class OnConflictUpdateBuilder {
|
|
|
251
251
|
whereRef(lhs, op, rhs) {
|
|
252
252
|
return new OnConflictUpdateBuilder({
|
|
253
253
|
...this.#props,
|
|
254
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(
|
|
254
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
|
|
255
255
|
});
|
|
256
256
|
}
|
|
257
257
|
orWhere(...args) {
|
|
258
258
|
return new OnConflictUpdateBuilder({
|
|
259
259
|
...this.#props,
|
|
260
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(
|
|
260
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
|
|
261
261
|
});
|
|
262
262
|
}
|
|
263
263
|
/**
|
|
@@ -268,7 +268,7 @@ class OnConflictUpdateBuilder {
|
|
|
268
268
|
orWhereRef(lhs, op, rhs) {
|
|
269
269
|
return new OnConflictUpdateBuilder({
|
|
270
270
|
...this.#props,
|
|
271
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(
|
|
271
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
|
|
272
272
|
});
|
|
273
273
|
}
|
|
274
274
|
/**
|
|
@@ -279,7 +279,7 @@ class OnConflictUpdateBuilder {
|
|
|
279
279
|
whereExists(arg) {
|
|
280
280
|
return new OnConflictUpdateBuilder({
|
|
281
281
|
...this.#props,
|
|
282
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(
|
|
282
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
|
|
283
283
|
});
|
|
284
284
|
}
|
|
285
285
|
/**
|
|
@@ -290,7 +290,7 @@ class OnConflictUpdateBuilder {
|
|
|
290
290
|
whereNotExists(arg) {
|
|
291
291
|
return new OnConflictUpdateBuilder({
|
|
292
292
|
...this.#props,
|
|
293
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(
|
|
293
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
294
294
|
});
|
|
295
295
|
}
|
|
296
296
|
/**
|
|
@@ -301,7 +301,7 @@ class OnConflictUpdateBuilder {
|
|
|
301
301
|
orWhereExists(arg) {
|
|
302
302
|
return new OnConflictUpdateBuilder({
|
|
303
303
|
...this.#props,
|
|
304
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(
|
|
304
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
|
|
305
305
|
});
|
|
306
306
|
}
|
|
307
307
|
/**
|
|
@@ -312,7 +312,7 @@ class OnConflictUpdateBuilder {
|
|
|
312
312
|
orWhereNotExists(arg) {
|
|
313
313
|
return new OnConflictUpdateBuilder({
|
|
314
314
|
...this.#props,
|
|
315
|
-
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(
|
|
315
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
316
316
|
});
|
|
317
317
|
}
|
|
318
318
|
toOperationNode() {
|
|
@@ -45,6 +45,8 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
|
45
45
|
* Return arbitrary expressions:
|
|
46
46
|
*
|
|
47
47
|
* ```ts
|
|
48
|
+
* import { sql } from 'kysely'
|
|
49
|
+
*
|
|
48
50
|
* const { id, full_name, first_pet_id } = await db
|
|
49
51
|
* .insertInto('person')
|
|
50
52
|
* .values({
|
|
@@ -53,7 +55,7 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
|
53
55
|
* })
|
|
54
56
|
* .returning([
|
|
55
57
|
* 'id as id',
|
|
56
|
-
*
|
|
58
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
57
59
|
* (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
58
60
|
* ])
|
|
59
61
|
* .executeTakeFirst()
|