kysely 0.13.0 → 0.14.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/dist/cjs/{introspection → dialect}/database-introspector.d.ts +0 -0
- package/dist/cjs/{introspection → dialect}/database-introspector.js +0 -0
- package/dist/cjs/dialect/dialect.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/kysely.d.ts +1 -1
- package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/check-constraint-node.js +2 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +2 -2
- package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/generated-node.d.ts +20 -0
- package/dist/cjs/operation-node/generated-node.js +31 -0
- package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
- package/dist/cjs/operation-node/on-conflict-node.js +39 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +11 -5
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -1
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/query-builder/insert-query-builder.d.ts +76 -75
- package/dist/cjs/query-builder/insert-query-builder.js +150 -15
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +684 -0
- package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +33 -7
- package/dist/cjs/schema/alter-table-builder.d.ts +29 -9
- package/dist/cjs/schema/alter-table-builder.js +33 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +28 -8
- package/dist/cjs/schema/column-definition-builder.js +17 -7
- package/dist/cjs/schema/create-index-builder.d.ts +3 -2
- package/dist/cjs/schema/create-index-builder.js +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +3 -2
- package/dist/cjs/schema/create-table-builder.js +2 -2
- package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
- package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
- package/dist/esm/dialect/dialect.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/kysely.d.ts +1 -1
- package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/check-constraint-node.js +2 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +2 -2
- package/dist/esm/operation-node/data-type-node.d.ts +1 -1
- package/dist/esm/operation-node/generated-node.d.ts +20 -0
- package/dist/esm/operation-node/generated-node.js +28 -0
- package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
- package/dist/esm/operation-node/on-conflict-node.js +39 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -2
- package/dist/esm/operation-node/operation-node-transformer.js +11 -5
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -2
- package/dist/esm/operation-node/operation-node-visitor.js +1 -1
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/query-builder/insert-query-builder.d.ts +76 -75
- package/dist/esm/query-builder/insert-query-builder.js +150 -15
- package/dist/esm/query-builder/on-conflict-builder.d.ts +684 -0
- package/dist/esm/query-builder/on-conflict-builder.js +317 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -2
- package/dist/esm/query-compiler/default-query-compiler.js +33 -7
- package/dist/esm/schema/alter-table-builder.d.ts +29 -9
- package/dist/esm/schema/alter-table-builder.js +33 -9
- package/dist/esm/schema/column-definition-builder.d.ts +28 -8
- package/dist/esm/schema/column-definition-builder.js +17 -7
- package/dist/esm/schema/create-index-builder.d.ts +3 -2
- package/dist/esm/schema/create-index-builder.js +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +3 -2
- package/dist/esm/schema/create-table-builder.js +2 -2
- package/package.json +1 -1
- package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
- package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
- package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
- package/dist/cjs/parser/on-conflict-parser.js +0 -35
- package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
- package/dist/esm/operation-node/generated-always-as-node.js +0 -22
- package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
- package/dist/esm/parser/on-conflict-parser.js +0 -30
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnConflictUpdateBuilder = exports.OnConflictDoNothingBuilder = exports.OnConflictBuilder = void 0;
|
|
4
|
+
const column_node_js_1 = require("../operation-node/column-node.js");
|
|
5
|
+
const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
6
|
+
const on_conflict_node_js_1 = require("../operation-node/on-conflict-node.js");
|
|
7
|
+
const filter_parser_js_1 = require("../parser/filter-parser.js");
|
|
8
|
+
const update_set_parser_js_1 = require("../parser/update-set-parser.js");
|
|
9
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
10
|
+
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
11
|
+
class OnConflictBuilder {
|
|
12
|
+
#props;
|
|
13
|
+
constructor(props) {
|
|
14
|
+
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Specify a single column as the conflict target.
|
|
18
|
+
*
|
|
19
|
+
* Also see the {@link columns}, {@link constraint} and {@link expression}
|
|
20
|
+
* methods for alternative ways to specify the conflict target.
|
|
21
|
+
*/
|
|
22
|
+
column(column) {
|
|
23
|
+
const columnNode = column_node_js_1.ColumnNode.create(column);
|
|
24
|
+
return new OnConflictBuilder({
|
|
25
|
+
...this.#props,
|
|
26
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
27
|
+
columns: this.#props.onConflictNode.columns
|
|
28
|
+
? (0, object_utils_js_1.freeze)([...this.#props.onConflictNode.columns, columnNode])
|
|
29
|
+
: (0, object_utils_js_1.freeze)([columnNode]),
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Specify a list of columns as the conflict target.
|
|
35
|
+
*
|
|
36
|
+
* Also see the {@link column}, {@link constraint} and {@link expression}
|
|
37
|
+
* methods for alternative ways to specify the conflict target.
|
|
38
|
+
*/
|
|
39
|
+
columns(columns) {
|
|
40
|
+
const columnNodes = columns.map(column_node_js_1.ColumnNode.create);
|
|
41
|
+
return new OnConflictBuilder({
|
|
42
|
+
...this.#props,
|
|
43
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
44
|
+
columns: this.#props.onConflictNode.columns
|
|
45
|
+
? (0, object_utils_js_1.freeze)([...this.#props.onConflictNode.columns, ...columnNodes])
|
|
46
|
+
: (0, object_utils_js_1.freeze)(columnNodes),
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Specify a specific constraint by name as the conflict target.
|
|
52
|
+
*
|
|
53
|
+
* Also see the {@link column}, {@link columns} and {@link expression}
|
|
54
|
+
* methods for alternative ways to specify the conflict target.
|
|
55
|
+
*/
|
|
56
|
+
constraint(constraintName) {
|
|
57
|
+
return new OnConflictBuilder({
|
|
58
|
+
...this.#props,
|
|
59
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
60
|
+
constraint: identifier_node_js_1.IdentifierNode.create(constraintName),
|
|
61
|
+
}),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Specify an expression as the conflict target.
|
|
66
|
+
*
|
|
67
|
+
* This can be used if the unique index is an expression index.
|
|
68
|
+
*
|
|
69
|
+
* Also see the {@link column}, {@link columns} and {@link constraint}
|
|
70
|
+
* methods for alternative ways to specify the conflict target.
|
|
71
|
+
*/
|
|
72
|
+
expression(expression) {
|
|
73
|
+
return new OnConflictBuilder({
|
|
74
|
+
...this.#props,
|
|
75
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
76
|
+
indexExpression: expression.toOperationNode(),
|
|
77
|
+
}),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
where(...args) {
|
|
81
|
+
return new OnConflictBuilder({
|
|
82
|
+
...this.#props,
|
|
83
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Specify an index predicate for the index target.
|
|
88
|
+
*
|
|
89
|
+
* See {@link WhereInterface.whereRef} for more info.
|
|
90
|
+
*/
|
|
91
|
+
whereRef(lhs, op, rhs) {
|
|
92
|
+
return new OnConflictBuilder({
|
|
93
|
+
...this.#props,
|
|
94
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
orWhere(...args) {
|
|
98
|
+
return new OnConflictBuilder({
|
|
99
|
+
...this.#props,
|
|
100
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Specify an index predicate for the index target.
|
|
105
|
+
*
|
|
106
|
+
* See {@link WhereInterface.orWhereRef} for more info.
|
|
107
|
+
*/
|
|
108
|
+
orWhereRef(lhs, op, rhs) {
|
|
109
|
+
return new OnConflictBuilder({
|
|
110
|
+
...this.#props,
|
|
111
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Specify an index predicate for the index target.
|
|
116
|
+
*
|
|
117
|
+
* See {@link WhereInterface.whereExists} for more info.
|
|
118
|
+
*/
|
|
119
|
+
whereExists(arg) {
|
|
120
|
+
return new OnConflictBuilder({
|
|
121
|
+
...this.#props,
|
|
122
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Specify an index predicate for the index target.
|
|
127
|
+
*
|
|
128
|
+
* See {@link WhereInterface.whereNotExists} for more info.
|
|
129
|
+
*/
|
|
130
|
+
whereNotExists(arg) {
|
|
131
|
+
return new OnConflictBuilder({
|
|
132
|
+
...this.#props,
|
|
133
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Specify an index predicate for the index target.
|
|
138
|
+
*
|
|
139
|
+
* See {@link WhereInterface.orWhereExists} for more info.
|
|
140
|
+
*/
|
|
141
|
+
orWhereExists(arg) {
|
|
142
|
+
return new OnConflictBuilder({
|
|
143
|
+
...this.#props,
|
|
144
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Specify an index predicate for the index target.
|
|
149
|
+
*
|
|
150
|
+
* See {@link WhereInterface.orWhereNotExists} for more info.
|
|
151
|
+
*/
|
|
152
|
+
orWhereNotExists(arg) {
|
|
153
|
+
return new OnConflictBuilder({
|
|
154
|
+
...this.#props,
|
|
155
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Adds the "do nothing" conflict action.
|
|
160
|
+
*
|
|
161
|
+
* ### Examples
|
|
162
|
+
*
|
|
163
|
+
* ```ts
|
|
164
|
+
* await db
|
|
165
|
+
* .insertInto('person')
|
|
166
|
+
* .values({ id: db.generated, first_name, pic })
|
|
167
|
+
* .onConflict((oc) => oc
|
|
168
|
+
* .column('pic')
|
|
169
|
+
* .doNothing()
|
|
170
|
+
* )
|
|
171
|
+
* ```
|
|
172
|
+
*
|
|
173
|
+
* The generated SQL (PostgreSQL):
|
|
174
|
+
*
|
|
175
|
+
* ```sql
|
|
176
|
+
* insert into "person" ("first_name", "pic")
|
|
177
|
+
* values ($1, $2)
|
|
178
|
+
* on conflict ("pic") do nothing
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
181
|
+
doNothing() {
|
|
182
|
+
return new OnConflictDoNothingBuilder({
|
|
183
|
+
...this.#props,
|
|
184
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
185
|
+
doNothing: true,
|
|
186
|
+
}),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Adds the "do update set" conflict action.
|
|
191
|
+
*
|
|
192
|
+
* ### Examples
|
|
193
|
+
*
|
|
194
|
+
* ```ts
|
|
195
|
+
* await db
|
|
196
|
+
* .insertInto('person')
|
|
197
|
+
* .values({ id: db.generated, first_name, pic })
|
|
198
|
+
* .onConflict((oc) => oc
|
|
199
|
+
* .column('pic')
|
|
200
|
+
* .doUpdateSet({ first_name })
|
|
201
|
+
* )
|
|
202
|
+
* ```
|
|
203
|
+
*
|
|
204
|
+
* The generated SQL (PostgreSQL):
|
|
205
|
+
*
|
|
206
|
+
* ```sql
|
|
207
|
+
* insert into "person" ("first_name", "pic")
|
|
208
|
+
* values ($1, $2)
|
|
209
|
+
* on conflict ("pic")
|
|
210
|
+
* do update set "first_name" = $3
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
doUpdateSet(updates) {
|
|
214
|
+
return new OnConflictUpdateBuilder({
|
|
215
|
+
...this.#props,
|
|
216
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
217
|
+
updates: (0, update_set_parser_js_1.parseUpdateObject)(this.#props.parseContext, updates),
|
|
218
|
+
}),
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
exports.OnConflictBuilder = OnConflictBuilder;
|
|
223
|
+
(0, prevent_await_js_1.preventAwait)(OnConflictBuilder, "don't await OnConflictBuilder instances.");
|
|
224
|
+
class OnConflictDoNothingBuilder {
|
|
225
|
+
#props;
|
|
226
|
+
constructor(props) {
|
|
227
|
+
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
228
|
+
}
|
|
229
|
+
toOperationNode() {
|
|
230
|
+
return this.#props.onConflictNode;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
exports.OnConflictDoNothingBuilder = OnConflictDoNothingBuilder;
|
|
234
|
+
(0, prevent_await_js_1.preventAwait)(OnConflictDoNothingBuilder, "don't await OnConflictDoNothingBuilder instances.");
|
|
235
|
+
class OnConflictUpdateBuilder {
|
|
236
|
+
#props;
|
|
237
|
+
constructor(props) {
|
|
238
|
+
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
239
|
+
}
|
|
240
|
+
where(...args) {
|
|
241
|
+
return new OnConflictUpdateBuilder({
|
|
242
|
+
...this.#props,
|
|
243
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Specify a where condition for the update operation.
|
|
248
|
+
*
|
|
249
|
+
* See {@link WhereInterface.whereRef} for more info.
|
|
250
|
+
*/
|
|
251
|
+
whereRef(lhs, op, rhs) {
|
|
252
|
+
return new OnConflictUpdateBuilder({
|
|
253
|
+
...this.#props,
|
|
254
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
orWhere(...args) {
|
|
258
|
+
return new OnConflictUpdateBuilder({
|
|
259
|
+
...this.#props,
|
|
260
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Specify a where condition for the update operation.
|
|
265
|
+
*
|
|
266
|
+
* See {@link WhereInterface.orWhereRef} for more info.
|
|
267
|
+
*/
|
|
268
|
+
orWhereRef(lhs, op, rhs) {
|
|
269
|
+
return new OnConflictUpdateBuilder({
|
|
270
|
+
...this.#props,
|
|
271
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Specify a where condition for the update operation.
|
|
276
|
+
*
|
|
277
|
+
* See {@link WhereInterface.whereExists} for more info.
|
|
278
|
+
*/
|
|
279
|
+
whereExists(arg) {
|
|
280
|
+
return new OnConflictUpdateBuilder({
|
|
281
|
+
...this.#props,
|
|
282
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Specify a where condition for the update operation.
|
|
287
|
+
*
|
|
288
|
+
* See {@link WhereInterface.whereNotExists} for more info.
|
|
289
|
+
*/
|
|
290
|
+
whereNotExists(arg) {
|
|
291
|
+
return new OnConflictUpdateBuilder({
|
|
292
|
+
...this.#props,
|
|
293
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Specify a where condition for the update operation.
|
|
298
|
+
*
|
|
299
|
+
* See {@link WhereInterface.orWhereExists} for more info.
|
|
300
|
+
*/
|
|
301
|
+
orWhereExists(arg) {
|
|
302
|
+
return new OnConflictUpdateBuilder({
|
|
303
|
+
...this.#props,
|
|
304
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Specify a where condition for the update operation.
|
|
309
|
+
*
|
|
310
|
+
* See {@link WhereInterface.orWhereNotExists} for more info.
|
|
311
|
+
*/
|
|
312
|
+
orWhereNotExists(arg) {
|
|
313
|
+
return new OnConflictUpdateBuilder({
|
|
314
|
+
...this.#props,
|
|
315
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
toOperationNode() {
|
|
319
|
+
return this.#props.onConflictNode;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
exports.OnConflictUpdateBuilder = OnConflictUpdateBuilder;
|
|
323
|
+
(0, prevent_await_js_1.preventAwait)(OnConflictUpdateBuilder, "don't await OnConflictUpdateBuilder instances.");
|
|
@@ -64,7 +64,7 @@ import { ColumnNode } from '../operation-node/column-node.js';
|
|
|
64
64
|
import { UnionNode } from '../operation-node/union-node.js';
|
|
65
65
|
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|
66
66
|
import { DropViewNode } from '../operation-node/drop-view-node.js';
|
|
67
|
-
import {
|
|
67
|
+
import { GeneratedNode } from '../operation-node/generated-node.js';
|
|
68
68
|
import { DefaultValueNode } from '../operation-node/default-value-node.js';
|
|
69
69
|
import { OnNode } from '../operation-node/on-node.js';
|
|
70
70
|
import { ValuesNode } from '../operation-node/values-node.js';
|
|
@@ -142,7 +142,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
142
142
|
protected visitUnion(node: UnionNode): void;
|
|
143
143
|
protected visitCreateView(node: CreateViewNode): void;
|
|
144
144
|
protected visitDropView(node: DropViewNode): void;
|
|
145
|
-
protected
|
|
145
|
+
protected visitGenerated(node: GeneratedNode): void;
|
|
146
146
|
protected visitDefaultValue(node: DefaultValueNode): void;
|
|
147
147
|
protected append(str: string): void;
|
|
148
148
|
protected appendValue(parameter: unknown): void;
|
|
@@ -327,9 +327,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
327
327
|
if (node.unsigned) {
|
|
328
328
|
this.append(' unsigned');
|
|
329
329
|
}
|
|
330
|
-
if (node.
|
|
330
|
+
if (node.generated) {
|
|
331
331
|
this.append(' ');
|
|
332
|
-
this.visitNode(node.
|
|
332
|
+
this.visitNode(node.generated);
|
|
333
333
|
}
|
|
334
334
|
if (node.defaultTo) {
|
|
335
335
|
this.append(' ');
|
|
@@ -454,16 +454,29 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
454
454
|
this.compileList(node.columns);
|
|
455
455
|
this.append(')');
|
|
456
456
|
}
|
|
457
|
-
if (node.constraint) {
|
|
457
|
+
else if (node.constraint) {
|
|
458
458
|
this.append(' on constraint ');
|
|
459
459
|
this.visitNode(node.constraint);
|
|
460
460
|
}
|
|
461
|
+
else if (node.indexExpression) {
|
|
462
|
+
this.append(' (');
|
|
463
|
+
this.visitNode(node.indexExpression);
|
|
464
|
+
this.append(')');
|
|
465
|
+
}
|
|
466
|
+
if (node.indexWhere) {
|
|
467
|
+
this.append(' ');
|
|
468
|
+
this.visitNode(node.indexWhere);
|
|
469
|
+
}
|
|
461
470
|
if (node.doNothing === true) {
|
|
462
471
|
this.append(' do nothing');
|
|
463
472
|
}
|
|
464
473
|
else if (node.updates) {
|
|
465
474
|
this.append(' do update set ');
|
|
466
475
|
this.compileList(node.updates);
|
|
476
|
+
if (node.updateWhere) {
|
|
477
|
+
this.append(' ');
|
|
478
|
+
this.visitNode(node.updateWhere);
|
|
479
|
+
}
|
|
467
480
|
}
|
|
468
481
|
}
|
|
469
482
|
visitOnDuplicateKey(node) {
|
|
@@ -725,10 +738,23 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
725
738
|
}
|
|
726
739
|
this.visitNode(node.name);
|
|
727
740
|
}
|
|
728
|
-
|
|
729
|
-
this.append('generated
|
|
730
|
-
|
|
731
|
-
|
|
741
|
+
visitGenerated(node) {
|
|
742
|
+
this.append('generated ');
|
|
743
|
+
if (node.always) {
|
|
744
|
+
this.append('always ');
|
|
745
|
+
}
|
|
746
|
+
if (node.byDefault) {
|
|
747
|
+
this.append('by default ');
|
|
748
|
+
}
|
|
749
|
+
this.append('as ');
|
|
750
|
+
if (node.identity) {
|
|
751
|
+
this.append('identity');
|
|
752
|
+
}
|
|
753
|
+
if (node.expression) {
|
|
754
|
+
this.append('(');
|
|
755
|
+
this.visitNode(node.expression);
|
|
756
|
+
this.append(')');
|
|
757
|
+
}
|
|
732
758
|
if (node.stored) {
|
|
733
759
|
this.append(' stored');
|
|
734
760
|
}
|
|
@@ -31,7 +31,7 @@ export declare class AlterTableBuilder {
|
|
|
31
31
|
*/
|
|
32
32
|
modifyColumn(columnName: string, dataType: DataTypeExpression): AlterTableModifyColumnBuilder;
|
|
33
33
|
addUniqueConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|
34
|
-
addCheckConstraint(constraintName: string, checkExpression:
|
|
34
|
+
addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): AlterTableExecutor;
|
|
35
35
|
addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): AlterTableAddForeignKeyConstraintBuilder;
|
|
36
36
|
}
|
|
37
37
|
export interface AlterTableBuilderProps {
|
|
@@ -151,11 +151,13 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
|
|
|
151
151
|
* ```ts
|
|
152
152
|
* db.schema
|
|
153
153
|
* .createTable('pet')
|
|
154
|
-
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
154
|
+
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
155
|
+
* col.check(db.raw('number_of_legs < 5'))
|
|
156
|
+
* )
|
|
155
157
|
* .execute()
|
|
156
158
|
* ```
|
|
157
159
|
*/
|
|
158
|
-
check(
|
|
160
|
+
check(expression: AnyRawBuilder): AlterTableAddColumnBuilder;
|
|
159
161
|
/**
|
|
160
162
|
* Makes the column a generated column using a `generated always as` statement.
|
|
161
163
|
*
|
|
@@ -165,12 +167,20 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
|
|
|
165
167
|
* db.schema
|
|
166
168
|
* .createTable('person')
|
|
167
169
|
* .addColumn('full_name', 'varchar(255)',
|
|
168
|
-
* (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
170
|
+
* (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
|
|
169
171
|
* )
|
|
170
172
|
* .execute()
|
|
171
173
|
* ```
|
|
172
174
|
*/
|
|
173
|
-
generatedAlwaysAs(
|
|
175
|
+
generatedAlwaysAs(expression: AnyRawBuilder): AlterTableAddColumnBuilder;
|
|
176
|
+
/**
|
|
177
|
+
* Adds the `generated always as identity` specifier on supported dialects.
|
|
178
|
+
*/
|
|
179
|
+
generatedAlwaysAsIdentity(): AlterTableAddColumnBuilder;
|
|
180
|
+
/**
|
|
181
|
+
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
182
|
+
*/
|
|
183
|
+
generatedByDefaultAsIdentity(): AlterTableAddColumnBuilder;
|
|
174
184
|
/**
|
|
175
185
|
* Makes a generated column stored instead of virtual. This method can only
|
|
176
186
|
* be used with {@link generatedAlwaysAs}
|
|
@@ -286,11 +296,13 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
|
|
|
286
296
|
* ```ts
|
|
287
297
|
* db.schema
|
|
288
298
|
* .createTable('pet')
|
|
289
|
-
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
299
|
+
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
300
|
+
* col.check(db.raw('number_of_legs < 5'))
|
|
301
|
+
* )
|
|
290
302
|
* .execute()
|
|
291
303
|
* ```
|
|
292
304
|
*/
|
|
293
|
-
check(
|
|
305
|
+
check(expression: AnyRawBuilder): AlterTableModifyColumnBuilder;
|
|
294
306
|
/**
|
|
295
307
|
* Makes the column a generated column using a `generated always as` statement.
|
|
296
308
|
*
|
|
@@ -300,12 +312,20 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
|
|
|
300
312
|
* db.schema
|
|
301
313
|
* .createTable('person')
|
|
302
314
|
* .addColumn('full_name', 'varchar(255)',
|
|
303
|
-
* (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
315
|
+
* (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
|
|
304
316
|
* )
|
|
305
317
|
* .execute()
|
|
306
318
|
* ```
|
|
307
319
|
*/
|
|
308
|
-
generatedAlwaysAs(
|
|
320
|
+
generatedAlwaysAs(expression: AnyRawBuilder): AlterTableModifyColumnBuilder;
|
|
321
|
+
/**
|
|
322
|
+
* Adds the `generated always as identity` specifier on supported dialects.
|
|
323
|
+
*/
|
|
324
|
+
generatedAlwaysAsIdentity(): AlterTableModifyColumnBuilder;
|
|
325
|
+
/**
|
|
326
|
+
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
327
|
+
*/
|
|
328
|
+
generatedByDefaultAsIdentity(): AlterTableModifyColumnBuilder;
|
|
309
329
|
/**
|
|
310
330
|
* Makes a generated column stored instead of virtual. This method can only
|
|
311
331
|
* be used with {@link generatedAlwaysAs}
|
|
@@ -98,7 +98,7 @@ class AlterTableBuilder {
|
|
|
98
98
|
return new AlterTableExecutor({
|
|
99
99
|
...this.#props,
|
|
100
100
|
alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
|
|
101
|
-
addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
|
|
101
|
+
addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
|
|
102
102
|
}),
|
|
103
103
|
});
|
|
104
104
|
}
|
|
@@ -244,16 +244,28 @@ class AlterTableAddColumnBuilder {
|
|
|
244
244
|
columnBuilder: this.#props.columnBuilder.defaultTo(value),
|
|
245
245
|
});
|
|
246
246
|
}
|
|
247
|
-
check(
|
|
247
|
+
check(expression) {
|
|
248
248
|
return new AlterTableAddColumnBuilder({
|
|
249
249
|
...this.#props,
|
|
250
|
-
columnBuilder: this.#props.columnBuilder.check(
|
|
250
|
+
columnBuilder: this.#props.columnBuilder.check(expression),
|
|
251
251
|
});
|
|
252
252
|
}
|
|
253
|
-
generatedAlwaysAs(
|
|
253
|
+
generatedAlwaysAs(expression) {
|
|
254
254
|
return new AlterTableAddColumnBuilder({
|
|
255
255
|
...this.#props,
|
|
256
|
-
columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(
|
|
256
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
generatedAlwaysAsIdentity() {
|
|
260
|
+
return new AlterTableAddColumnBuilder({
|
|
261
|
+
...this.#props,
|
|
262
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
generatedByDefaultAsIdentity() {
|
|
266
|
+
return new AlterTableAddColumnBuilder({
|
|
267
|
+
...this.#props,
|
|
268
|
+
columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
|
|
257
269
|
});
|
|
258
270
|
}
|
|
259
271
|
stored() {
|
|
@@ -334,16 +346,28 @@ class AlterTableModifyColumnBuilder {
|
|
|
334
346
|
columnBuilder: this.#props.columnBuilder.defaultTo(value),
|
|
335
347
|
});
|
|
336
348
|
}
|
|
337
|
-
check(
|
|
349
|
+
check(expression) {
|
|
350
|
+
return new AlterTableModifyColumnBuilder({
|
|
351
|
+
...this.#props,
|
|
352
|
+
columnBuilder: this.#props.columnBuilder.check(expression),
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
generatedAlwaysAs(expression) {
|
|
356
|
+
return new AlterTableModifyColumnBuilder({
|
|
357
|
+
...this.#props,
|
|
358
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
generatedAlwaysAsIdentity() {
|
|
338
362
|
return new AlterTableModifyColumnBuilder({
|
|
339
363
|
...this.#props,
|
|
340
|
-
columnBuilder: this.#props.columnBuilder.
|
|
364
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
|
|
341
365
|
});
|
|
342
366
|
}
|
|
343
|
-
|
|
367
|
+
generatedByDefaultAsIdentity() {
|
|
344
368
|
return new AlterTableModifyColumnBuilder({
|
|
345
369
|
...this.#props,
|
|
346
|
-
columnBuilder: this.#props.columnBuilder.
|
|
370
|
+
columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
|
|
347
371
|
});
|
|
348
372
|
}
|
|
349
373
|
stored() {
|
|
@@ -93,11 +93,13 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
93
93
|
* ```ts
|
|
94
94
|
* db.schema
|
|
95
95
|
* .createTable('pet')
|
|
96
|
-
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
96
|
+
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
97
|
+
* col.check(db.raw('number_of_legs < 5'))
|
|
98
|
+
* )
|
|
97
99
|
* .execute()
|
|
98
100
|
* ```
|
|
99
101
|
*/
|
|
100
|
-
check(
|
|
102
|
+
check(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
|
|
101
103
|
/**
|
|
102
104
|
* Makes the column a generated column using a `generated always as` statement.
|
|
103
105
|
*
|
|
@@ -107,12 +109,20 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
107
109
|
* db.schema
|
|
108
110
|
* .createTable('person')
|
|
109
111
|
* .addColumn('full_name', 'varchar(255)',
|
|
110
|
-
* (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
112
|
+
* (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
|
|
111
113
|
* )
|
|
112
114
|
* .execute()
|
|
113
115
|
* ```
|
|
114
116
|
*/
|
|
115
|
-
generatedAlwaysAs(
|
|
117
|
+
generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
|
|
118
|
+
/**
|
|
119
|
+
* Adds the `generated always as identity` specifier on supported dialects.
|
|
120
|
+
*/
|
|
121
|
+
generatedAlwaysAsIdentity(): ColumnDefinitionBuilderInterface;
|
|
122
|
+
/**
|
|
123
|
+
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
124
|
+
*/
|
|
125
|
+
generatedByDefaultAsIdentity(): ColumnDefinitionBuilderInterface;
|
|
116
126
|
/**
|
|
117
127
|
* Makes a generated column stored instead of virtual. This method can only
|
|
118
128
|
* be used with {@link generatedAlwaysAs}
|
|
@@ -222,11 +232,13 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
222
232
|
* ```ts
|
|
223
233
|
* db.schema
|
|
224
234
|
* .createTable('pet')
|
|
225
|
-
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
235
|
+
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
236
|
+
* col.check(db.raw('number_of_legs < 5'))
|
|
237
|
+
* )
|
|
226
238
|
* .execute()
|
|
227
239
|
* ```
|
|
228
240
|
*/
|
|
229
|
-
check(
|
|
241
|
+
check(expression: AnyRawBuilder): ColumnDefinitionBuilder;
|
|
230
242
|
/**
|
|
231
243
|
* Makes the column a generated column using a `generated always as` statement.
|
|
232
244
|
*
|
|
@@ -236,12 +248,20 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
236
248
|
* db.schema
|
|
237
249
|
* .createTable('person')
|
|
238
250
|
* .addColumn('full_name', 'varchar(255)',
|
|
239
|
-
* (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
251
|
+
* (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
|
|
240
252
|
* )
|
|
241
253
|
* .execute()
|
|
242
254
|
* ```
|
|
243
255
|
*/
|
|
244
|
-
generatedAlwaysAs(
|
|
256
|
+
generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilder;
|
|
257
|
+
/**
|
|
258
|
+
* Adds the `generated always as identity` specifier on supported dialects.
|
|
259
|
+
*/
|
|
260
|
+
generatedAlwaysAsIdentity(): ColumnDefinitionBuilder;
|
|
261
|
+
/**
|
|
262
|
+
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
263
|
+
*/
|
|
264
|
+
generatedByDefaultAsIdentity(): ColumnDefinitionBuilder;
|
|
245
265
|
/**
|
|
246
266
|
* Makes a generated column stored instead of virtual. This method can only
|
|
247
267
|
* be used with {@link generatedAlwaysAs}
|