kysely 0.13.0 → 0.15.1
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 +92 -32
- 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/mysql/mysql-introspector.js +3 -3
- 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/postgres/postgres-introspector.js +3 -3
- 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/dialect/sqlite/sqlite-introspector.js +3 -3
- package/dist/cjs/index.d.ts +6 -3
- package/dist/cjs/index.js +6 -3
- package/dist/cjs/kysely.d.ts +8 -40
- package/dist/cjs/kysely.js +8 -40
- package/dist/cjs/migration/file-migration-provider.d.ts +52 -0
- package/dist/cjs/migration/file-migration-provider.js +52 -0
- package/dist/{esm/migration/migration.d.ts → cjs/migration/migrator.d.ts} +159 -134
- package/dist/cjs/migration/{migration.js → migrator.js} +166 -57
- 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/parser/insert-values-parser.d.ts +4 -4
- package/dist/cjs/parser/insert-values-parser.js +2 -3
- package/dist/cjs/parser/reference-parser.d.ts +4 -3
- package/dist/cjs/parser/select-parser.d.ts +10 -4
- package/dist/cjs/parser/update-set-parser.d.ts +2 -1
- package/dist/cjs/query-builder/delete-query-builder.d.ts +2 -4
- package/dist/cjs/query-builder/insert-query-builder.d.ts +80 -95
- package/dist/cjs/query-builder/insert-query-builder.js +145 -15
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +686 -0
- package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -4
- package/dist/cjs/query-builder/select-query-builder.d.ts +1 -1
- package/dist/cjs/query-builder/update-query-builder.d.ts +2 -4
- 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/query-creator.d.ts +0 -2
- package/dist/cjs/query-creator.js +0 -2
- 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/cjs/util/column-type.d.ts +165 -0
- package/dist/cjs/util/column-type.js +2 -0
- package/dist/cjs/util/private-symbols.d.ts +5 -0
- package/dist/cjs/util/private-symbols.js +8 -0
- package/dist/cjs/util/type-utils.d.ts +6 -42
- 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/mysql/mysql-introspector.js +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/postgres/postgres-introspector.js +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/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/esm/index.d.ts +6 -3
- package/dist/esm/index.js +6 -3
- package/dist/esm/kysely.d.ts +8 -40
- package/dist/esm/kysely.js +8 -40
- package/dist/esm/migration/file-migration-provider.d.ts +52 -0
- package/dist/esm/migration/file-migration-provider.js +48 -0
- package/dist/{cjs/migration/migration.d.ts → esm/migration/migrator.d.ts} +159 -134
- package/dist/esm/migration/{migration.js → migrator.js} +165 -56
- 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/parser/insert-values-parser.d.ts +4 -4
- package/dist/esm/parser/insert-values-parser.js +2 -3
- package/dist/esm/parser/reference-parser.d.ts +4 -3
- package/dist/esm/parser/select-parser.d.ts +10 -4
- package/dist/esm/parser/update-set-parser.d.ts +2 -1
- package/dist/esm/query-builder/delete-query-builder.d.ts +2 -4
- package/dist/esm/query-builder/insert-query-builder.d.ts +80 -95
- package/dist/esm/query-builder/insert-query-builder.js +145 -15
- package/dist/esm/query-builder/on-conflict-builder.d.ts +686 -0
- package/dist/esm/query-builder/on-conflict-builder.js +317 -0
- package/dist/esm/query-builder/returning-interface.d.ts +2 -4
- package/dist/esm/query-builder/select-query-builder.d.ts +1 -1
- package/dist/esm/query-builder/update-query-builder.d.ts +2 -4
- 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/query-creator.d.ts +0 -2
- package/dist/esm/query-creator.js +0 -2
- 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/dist/esm/util/column-type.d.ts +165 -0
- package/dist/esm/util/column-type.js +1 -0
- package/dist/esm/util/private-symbols.d.ts +5 -0
- package/dist/esm/util/private-symbols.js +5 -0
- package/dist/esm/util/type-utils.d.ts +6 -42
- 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/cjs/util/generated-placeholder.d.ts +0 -3
- package/dist/cjs/util/generated-placeholder.js +0 -11
- 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
- package/dist/esm/util/generated-placeholder.d.ts +0 -3
- package/dist/esm/util/generated-placeholder.js +0 -7
|
@@ -7,13 +7,14 @@ const insert_query_node_js_1 = require("../operation-node/insert-query-node.js")
|
|
|
7
7
|
const query_node_js_1 = require("../operation-node/query-node.js");
|
|
8
8
|
const update_set_parser_js_1 = require("../parser/update-set-parser.js");
|
|
9
9
|
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
10
|
-
const on_conflict_parser_js_1 = require("../parser/on-conflict-parser.js");
|
|
11
10
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
12
11
|
const on_duplicate_key_node_js_1 = require("../operation-node/on-duplicate-key-node.js");
|
|
13
12
|
const insert_result_js_1 = require("./insert-result.js");
|
|
14
13
|
const no_result_error_js_1 = require("./no-result-error.js");
|
|
15
14
|
const complex_expression_parser_js_1 = require("../parser/complex-expression-parser.js");
|
|
16
15
|
const column_node_js_1 = require("../operation-node/column-node.js");
|
|
16
|
+
const on_conflict_builder_js_1 = require("./on-conflict-builder.js");
|
|
17
|
+
const on_conflict_node_js_1 = require("../operation-node/on-conflict-node.js");
|
|
17
18
|
class InsertQueryBuilder {
|
|
18
19
|
#props;
|
|
19
20
|
constructor(props) {
|
|
@@ -85,14 +86,6 @@ class InsertQueryBuilder {
|
|
|
85
86
|
}),
|
|
86
87
|
});
|
|
87
88
|
}
|
|
88
|
-
onConflictDoNothing(target) {
|
|
89
|
-
return new InsertQueryBuilder({
|
|
90
|
-
...this.#props,
|
|
91
|
-
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
92
|
-
onConflict: (0, on_conflict_parser_js_1.parseOnConflictDoNothing)(target),
|
|
93
|
-
}),
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
89
|
/**
|
|
97
90
|
* Changes an `insert into` query to an `insert ignore into` query.
|
|
98
91
|
*
|
|
@@ -103,7 +96,7 @@ class InsertQueryBuilder {
|
|
|
103
96
|
* occurs.
|
|
104
97
|
*
|
|
105
98
|
* This is only supported on some dialects like MySQL. On most dialects you should
|
|
106
|
-
* use the {@link
|
|
99
|
+
* use the {@link onConflict} method.
|
|
107
100
|
*
|
|
108
101
|
* ### Examples
|
|
109
102
|
*
|
|
@@ -122,11 +115,148 @@ class InsertQueryBuilder {
|
|
|
122
115
|
}),
|
|
123
116
|
});
|
|
124
117
|
}
|
|
125
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Adds an `on conflict` clause to the query.
|
|
120
|
+
*
|
|
121
|
+
* `on conflict` is only supported by some dialects like PostgreSQL and SQLite. On MySQL
|
|
122
|
+
* you can use {@link ignore} and {@link onDuplicateKeyUpdate} to achieve similar results.
|
|
123
|
+
*
|
|
124
|
+
* ### Examples
|
|
125
|
+
*
|
|
126
|
+
* ```ts
|
|
127
|
+
* await db
|
|
128
|
+
* .insertInto('pet')
|
|
129
|
+
* .values({
|
|
130
|
+
* name: 'Catto',
|
|
131
|
+
* species: 'cat',
|
|
132
|
+
* })
|
|
133
|
+
* .onConflict((oc) => oc
|
|
134
|
+
* .column('name')
|
|
135
|
+
* .doUpdateSet({ species: 'hamster' })
|
|
136
|
+
* )
|
|
137
|
+
* .execute()
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* The generated SQL (PostgreSQL):
|
|
141
|
+
*
|
|
142
|
+
* ```sql
|
|
143
|
+
* insert into "pet" ("name", "species")
|
|
144
|
+
* values ($1, $2)
|
|
145
|
+
* on conflict ("name")
|
|
146
|
+
* do update set "species" = $3
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* You can provide the name of the constraint instead of a column name:
|
|
150
|
+
*
|
|
151
|
+
* ```ts
|
|
152
|
+
* await db
|
|
153
|
+
* .insertInto('pet')
|
|
154
|
+
* .values({
|
|
155
|
+
* name: 'Catto',
|
|
156
|
+
* species: 'cat',
|
|
157
|
+
* })
|
|
158
|
+
* .onConflict((oc) => oc
|
|
159
|
+
* .constraint('pet_name_key')
|
|
160
|
+
* .doUpdateSet({ species: 'hamster' })
|
|
161
|
+
* )
|
|
162
|
+
* .execute()
|
|
163
|
+
* .execute()
|
|
164
|
+
* ```
|
|
165
|
+
*
|
|
166
|
+
* The generated SQL (PostgreSQL):
|
|
167
|
+
*
|
|
168
|
+
* ```sql
|
|
169
|
+
* insert into "pet" ("name", "species")
|
|
170
|
+
* values ($1, $2)
|
|
171
|
+
* on conflict on constraint "pet_name_key"
|
|
172
|
+
* do update set "species" = $3
|
|
173
|
+
* ```
|
|
174
|
+
*
|
|
175
|
+
* You can also specify an expression as the conflict target in case
|
|
176
|
+
* the unique index is an expression index:
|
|
177
|
+
*
|
|
178
|
+
* ```ts
|
|
179
|
+
* await db
|
|
180
|
+
* .insertInto('pet')
|
|
181
|
+
* .values({
|
|
182
|
+
* name: 'Catto',
|
|
183
|
+
* species: 'cat',
|
|
184
|
+
* })
|
|
185
|
+
* .onConflict((oc) => oc
|
|
186
|
+
* .expression(db.raw('lower(name)'))
|
|
187
|
+
* .doUpdateSet({ species: 'hamster' })
|
|
188
|
+
* )
|
|
189
|
+
* .execute()
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
192
|
+
* The generated SQL (PostgreSQL):
|
|
193
|
+
*
|
|
194
|
+
* ```sql
|
|
195
|
+
* insert into "pet" ("name", "species")
|
|
196
|
+
* values ($1, $2)
|
|
197
|
+
* on conflict (lower(name))
|
|
198
|
+
* do update set "species" = $3
|
|
199
|
+
* ```
|
|
200
|
+
*
|
|
201
|
+
* You can add a filter for the update statement like this:
|
|
202
|
+
*
|
|
203
|
+
* ```ts
|
|
204
|
+
* await db
|
|
205
|
+
* .insertInto('pet')
|
|
206
|
+
* .values({
|
|
207
|
+
* name: 'Catto',
|
|
208
|
+
* species: 'cat',
|
|
209
|
+
* })
|
|
210
|
+
* .onConflict((oc) => oc
|
|
211
|
+
* .column('name')
|
|
212
|
+
* .doUpdateSet({ species: 'hamster' })
|
|
213
|
+
* .where('excluded.name', '!=', 'Catto'')
|
|
214
|
+
* )
|
|
215
|
+
* .execute()
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
218
|
+
* The generated SQL (PostgreSQL):
|
|
219
|
+
*
|
|
220
|
+
* ```sql
|
|
221
|
+
* insert into "pet" ("name", "species")
|
|
222
|
+
* values ($1, $2)
|
|
223
|
+
* on conflict ("name")
|
|
224
|
+
* do update set "species" = $3
|
|
225
|
+
* where "excluded"."name" != $4
|
|
226
|
+
* ```
|
|
227
|
+
*
|
|
228
|
+
* You can create an `on conflict do nothing` clauses like this:
|
|
229
|
+
*
|
|
230
|
+
* ```ts
|
|
231
|
+
* await db
|
|
232
|
+
* .insertInto('pet')
|
|
233
|
+
* .values({
|
|
234
|
+
* name: 'Catto',
|
|
235
|
+
* species: 'cat',
|
|
236
|
+
* })
|
|
237
|
+
* .onConflict((oc) => oc
|
|
238
|
+
* .column('name')
|
|
239
|
+
* .doNothing()
|
|
240
|
+
* )
|
|
241
|
+
* .execute()
|
|
242
|
+
* ```
|
|
243
|
+
*
|
|
244
|
+
* The generated SQL (PostgreSQL):
|
|
245
|
+
*
|
|
246
|
+
* ```sql
|
|
247
|
+
* insert into "pet" ("name", "species")
|
|
248
|
+
* values ($1, $2)
|
|
249
|
+
* on conflict ("name") do nothing
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
onConflict(callback) {
|
|
126
253
|
return new InsertQueryBuilder({
|
|
127
254
|
...this.#props,
|
|
128
255
|
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
129
|
-
onConflict: (
|
|
256
|
+
onConflict: callback(new on_conflict_builder_js_1.OnConflictBuilder({
|
|
257
|
+
onConflictNode: on_conflict_node_js_1.OnConflictNode.create(),
|
|
258
|
+
parseContext: this.#props.parseContext,
|
|
259
|
+
})).toOperationNode(),
|
|
130
260
|
}),
|
|
131
261
|
});
|
|
132
262
|
}
|
|
@@ -137,7 +267,7 @@ class InsertQueryBuilder {
|
|
|
137
267
|
* a duplicate value in a unique index or primary key, an update of the old row occurs.
|
|
138
268
|
*
|
|
139
269
|
* This is only implemented by some dialects like MySQL. On most dialects you should
|
|
140
|
-
* use {@link
|
|
270
|
+
* use {@link onConflict} instead.
|
|
141
271
|
*
|
|
142
272
|
* ### Examples
|
|
143
273
|
*
|
|
@@ -180,9 +310,9 @@ class InsertQueryBuilder {
|
|
|
180
310
|
* .selectAll()
|
|
181
311
|
* .call((qb) => {
|
|
182
312
|
* if (something) {
|
|
183
|
-
* return qb.
|
|
313
|
+
* return qb.onConflict((oc) => oc.column('something').doNothing())
|
|
184
314
|
* } else {
|
|
185
|
-
* return qb.
|
|
315
|
+
* return qb.onConflict((oc) => oc.column('something_else').doNothing())
|
|
186
316
|
* }
|
|
187
317
|
* })
|
|
188
318
|
* .execute()
|