kysely 0.23.1 → 0.23.3

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.
Files changed (70) hide show
  1. package/README.md +5 -0
  2. package/dist/cjs/dialect/mysql/mysql-introspector.js +1 -1
  3. package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
  4. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  5. package/dist/cjs/index.d.ts +1 -1
  6. package/dist/cjs/operation-node/on-conflict-node.d.ts +2 -0
  7. package/dist/cjs/operation-node/on-conflict-node.js +12 -0
  8. package/dist/cjs/operation-node/query-node.d.ts +1 -0
  9. package/dist/cjs/operation-node/query-node.js +6 -0
  10. package/dist/cjs/operation-node/select-query-node.d.ts +4 -0
  11. package/dist/cjs/operation-node/select-query-node.js +24 -0
  12. package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
  13. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  14. package/dist/cjs/parser/update-set-parser.js +2 -2
  15. package/dist/cjs/query-builder/delete-query-builder.d.ts +63 -1
  16. package/dist/cjs/query-builder/delete-query-builder.js +51 -1
  17. package/dist/cjs/query-builder/insert-query-builder.d.ts +46 -3
  18. package/dist/cjs/query-builder/insert-query-builder.js +45 -1
  19. package/dist/cjs/query-builder/on-conflict-builder.d.ts +40 -2
  20. package/dist/cjs/query-builder/on-conflict-builder.js +12 -0
  21. package/dist/cjs/query-builder/select-query-builder.d.ts +138 -1
  22. package/dist/cjs/query-builder/select-query-builder.js +146 -1
  23. package/dist/cjs/query-builder/update-query-builder.d.ts +67 -3
  24. package/dist/cjs/query-builder/update-query-builder.js +53 -1
  25. package/dist/cjs/query-builder/where-interface.d.ts +19 -0
  26. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +23 -0
  27. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +38 -0
  28. package/dist/cjs/schema/alter-table-builder.d.ts +3 -35
  29. package/dist/cjs/schema/alter-table-builder.js +10 -102
  30. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +21 -0
  31. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +54 -0
  32. package/dist/cjs/schema/alter-table-executor.d.ts +18 -0
  33. package/dist/cjs/schema/alter-table-executor.js +22 -0
  34. package/dist/cjs/util/type-error.d.ts +3 -0
  35. package/dist/cjs/util/type-error.js +2 -0
  36. package/dist/esm/dialect/mysql/mysql-introspector.js +1 -1
  37. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
  38. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  39. package/dist/esm/index.d.ts +1 -1
  40. package/dist/esm/operation-node/on-conflict-node.d.ts +2 -0
  41. package/dist/esm/operation-node/on-conflict-node.js +12 -0
  42. package/dist/esm/operation-node/query-node.d.ts +1 -0
  43. package/dist/esm/operation-node/query-node.js +6 -0
  44. package/dist/esm/operation-node/select-query-node.d.ts +4 -0
  45. package/dist/esm/operation-node/select-query-node.js +24 -0
  46. package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
  47. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  48. package/dist/esm/parser/update-set-parser.js +2 -2
  49. package/dist/esm/query-builder/delete-query-builder.d.ts +63 -1
  50. package/dist/esm/query-builder/delete-query-builder.js +51 -1
  51. package/dist/esm/query-builder/insert-query-builder.d.ts +46 -3
  52. package/dist/esm/query-builder/insert-query-builder.js +45 -1
  53. package/dist/esm/query-builder/on-conflict-builder.d.ts +40 -2
  54. package/dist/esm/query-builder/on-conflict-builder.js +12 -0
  55. package/dist/esm/query-builder/select-query-builder.d.ts +138 -1
  56. package/dist/esm/query-builder/select-query-builder.js +146 -1
  57. package/dist/esm/query-builder/update-query-builder.d.ts +67 -3
  58. package/dist/esm/query-builder/update-query-builder.js +54 -2
  59. package/dist/esm/query-builder/where-interface.d.ts +19 -0
  60. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +23 -0
  61. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +35 -0
  62. package/dist/esm/schema/alter-table-builder.d.ts +3 -35
  63. package/dist/esm/schema/alter-table-builder.js +4 -93
  64. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +21 -0
  65. package/dist/esm/schema/alter-table-drop-constraint-builder.js +51 -0
  66. package/dist/esm/schema/alter-table-executor.d.ts +18 -0
  67. package/dist/esm/schema/alter-table-executor.js +19 -0
  68. package/dist/esm/util/type-error.d.ts +3 -0
  69. package/dist/esm/util/type-error.js +2 -0
  70. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AlterTableDropConstraintBuilder = exports.AlterTableAddForeignKeyConstraintBuilder = exports.AlterTableColumnAlteringBuilder = exports.AlterTableExecutor = exports.AlterTableBuilder = void 0;
3
+ exports.AlterTableColumnAlteringBuilder = exports.AlterTableBuilder = void 0;
4
4
  const add_column_node_js_1 = require("../operation-node/add-column-node.js");
5
5
  const alter_column_node_js_1 = require("../operation-node/alter-column-node.js");
6
6
  const alter_table_node_js_1 = require("../operation-node/alter-table-node.js");
@@ -22,6 +22,9 @@ const column_node_js_1 = require("../operation-node/column-node.js");
22
22
  const table_parser_js_1 = require("../parser/table-parser.js");
23
23
  const drop_constraint_node_js_1 = require("../operation-node/drop-constraint-node.js");
24
24
  const alter_column_builder_js_1 = require("./alter-column-builder.js");
25
+ const alter_table_executor_js_1 = require("./alter-table-executor.js");
26
+ const alter_table_add_foreign_key_constraint_builder_js_1 = require("./alter-table-add-foreign-key-constraint-builder.js");
27
+ const alter_table_drop_constraint_builder_js_1 = require("./alter-table-drop-constraint-builder.js");
25
28
  /**
26
29
  * This builder can be used to create a `alter table` query.
27
30
  */
@@ -31,7 +34,7 @@ class AlterTableBuilder {
31
34
  this.#props = (0, object_utils_js_1.freeze)(props);
32
35
  }
33
36
  renameTo(newTableName) {
34
- return new AlterTableExecutor({
37
+ return new alter_table_executor_js_1.AlterTableExecutor({
35
38
  ...this.#props,
36
39
  node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
37
40
  renameTo: (0, table_parser_js_1.parseTable)(newTableName),
@@ -39,7 +42,7 @@ class AlterTableBuilder {
39
42
  });
40
43
  }
41
44
  setSchema(newSchema) {
42
- return new AlterTableExecutor({
45
+ return new alter_table_executor_js_1.AlterTableExecutor({
43
46
  ...this.#props,
44
47
  node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
45
48
  setSchema: identifier_node_js_1.IdentifierNode.create(newSchema),
@@ -83,7 +86,7 @@ class AlterTableBuilder {
83
86
  * See {@link CreateTableBuilder.addUniqueConstraint}
84
87
  */
85
88
  addUniqueConstraint(constraintName, columns) {
86
- return new AlterTableExecutor({
89
+ return new alter_table_executor_js_1.AlterTableExecutor({
87
90
  ...this.#props,
88
91
  node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
89
92
  addConstraint: add_constraint_node_js_1.AddConstraintNode.create(unique_constraint_node_js_1.UniqueConstraintNode.create(columns, constraintName)),
@@ -94,7 +97,7 @@ class AlterTableBuilder {
94
97
  * See {@link CreateTableBuilder.addCheckConstraint}
95
98
  */
96
99
  addCheckConstraint(constraintName, checkExpression) {
97
- return new AlterTableExecutor({
100
+ return new alter_table_executor_js_1.AlterTableExecutor({
98
101
  ...this.#props,
99
102
  node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
100
103
  addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
@@ -109,13 +112,13 @@ class AlterTableBuilder {
109
112
  * is because you can only add one column per `ALTER TABLE` query.
110
113
  */
111
114
  addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns) {
112
- return new AlterTableAddForeignKeyConstraintBuilder({
115
+ return new alter_table_add_foreign_key_constraint_builder_js_1.AlterTableAddForeignKeyConstraintBuilder({
113
116
  ...this.#props,
114
117
  constraintBuilder: new foreign_key_constraint_builder_js_1.ForeignKeyConstraintBuilder(foreign_key_constraint_node_js_1.ForeignKeyConstraintNode.create(columns.map(column_node_js_1.ColumnNode.create), (0, table_parser_js_1.parseTable)(targetTable), targetColumns.map(column_node_js_1.ColumnNode.create), constraintName)),
115
118
  });
116
119
  }
117
120
  dropConstraint(constraintName) {
118
- return new AlterTableDropConstraintBuilder({
121
+ return new alter_table_drop_constraint_builder_js_1.AlterTableDropConstraintBuilder({
119
122
  ...this.#props,
120
123
  node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
121
124
  dropConstraint: drop_constraint_node_js_1.DropConstraintNode.create(constraintName),
@@ -132,22 +135,6 @@ class AlterTableBuilder {
132
135
  }
133
136
  }
134
137
  exports.AlterTableBuilder = AlterTableBuilder;
135
- class AlterTableExecutor {
136
- #props;
137
- constructor(props) {
138
- this.#props = (0, object_utils_js_1.freeze)(props);
139
- }
140
- toOperationNode() {
141
- return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
142
- }
143
- compile() {
144
- return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
145
- }
146
- async execute() {
147
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
148
- }
149
- }
150
- exports.AlterTableExecutor = AlterTableExecutor;
151
138
  class AlterTableColumnAlteringBuilder {
152
139
  #props;
153
140
  constructor(props) {
@@ -197,85 +184,6 @@ class AlterTableColumnAlteringBuilder {
197
184
  }
198
185
  }
199
186
  exports.AlterTableColumnAlteringBuilder = AlterTableColumnAlteringBuilder;
200
- class AlterTableAddForeignKeyConstraintBuilder {
201
- #props;
202
- constructor(props) {
203
- this.#props = (0, object_utils_js_1.freeze)(props);
204
- }
205
- onDelete(onDelete) {
206
- return new AlterTableAddForeignKeyConstraintBuilder({
207
- ...this.#props,
208
- constraintBuilder: this.#props.constraintBuilder.onDelete(onDelete),
209
- });
210
- }
211
- onUpdate(onUpdate) {
212
- return new AlterTableAddForeignKeyConstraintBuilder({
213
- ...this.#props,
214
- constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),
215
- });
216
- }
217
- toOperationNode() {
218
- return this.#props.executor.transformQuery(alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
219
- addConstraint: add_constraint_node_js_1.AddConstraintNode.create(this.#props.constraintBuilder.toOperationNode()),
220
- }), this.#props.queryId);
221
- }
222
- compile() {
223
- return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
224
- }
225
- async execute() {
226
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
227
- }
228
- }
229
- exports.AlterTableAddForeignKeyConstraintBuilder = AlterTableAddForeignKeyConstraintBuilder;
230
- class AlterTableDropConstraintBuilder {
231
- #props;
232
- constructor(props) {
233
- this.#props = (0, object_utils_js_1.freeze)(props);
234
- }
235
- ifExists() {
236
- return new AlterTableDropConstraintBuilder({
237
- ...this.#props,
238
- node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
239
- dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {
240
- ifExists: true,
241
- }),
242
- }),
243
- });
244
- }
245
- cascade() {
246
- return new AlterTableDropConstraintBuilder({
247
- ...this.#props,
248
- node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
249
- dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {
250
- modifier: 'cascade',
251
- }),
252
- }),
253
- });
254
- }
255
- restrict() {
256
- return new AlterTableDropConstraintBuilder({
257
- ...this.#props,
258
- node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
259
- dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {
260
- modifier: 'restrict',
261
- }),
262
- }),
263
- });
264
- }
265
- toOperationNode() {
266
- return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
267
- }
268
- compile() {
269
- return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
270
- }
271
- async execute() {
272
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
273
- }
274
- }
275
- exports.AlterTableDropConstraintBuilder = AlterTableDropConstraintBuilder;
276
187
  (0, prevent_await_js_1.preventAwait)(AlterTableBuilder, "don't await AlterTableBuilder instances");
277
188
  (0, prevent_await_js_1.preventAwait)(alter_column_builder_js_1.AlterColumnBuilder, "don't await AlterColumnBuilder instances");
278
- (0, prevent_await_js_1.preventAwait)(AlterTableExecutor, "don't await AlterTableExecutor instances directly. To execute the query you need to call `execute`");
279
189
  (0, prevent_await_js_1.preventAwait)(AlterTableColumnAlteringBuilder, "don't await AlterTableColumnAlteringBuilder instances directly. To execute the query you need to call `execute`");
280
- (0, prevent_await_js_1.preventAwait)(AlterTableAddForeignKeyConstraintBuilder, "don't await AlterTableAddForeignKeyConstraintBuilder instances directly. To execute the query you need to call `execute`");
281
- (0, prevent_await_js_1.preventAwait)(AlterTableDropConstraintBuilder, "don't await AlterTableDropConstraintBuilder instances directly. To execute the query you need to call `execute`");
@@ -0,0 +1,21 @@
1
+ import { AlterTableNode } from '../operation-node/alter-table-node.js';
2
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
+ import { QueryExecutor } from '../query-executor/query-executor.js';
5
+ import { Compilable } from '../util/compilable.js';
6
+ import { QueryId } from '../util/query-id.js';
7
+ export declare class AlterTableDropConstraintBuilder implements OperationNodeSource, Compilable {
8
+ #private;
9
+ constructor(props: AlterTableDropConstraintBuilderProps);
10
+ ifExists(): AlterTableDropConstraintBuilder;
11
+ cascade(): AlterTableDropConstraintBuilder;
12
+ restrict(): AlterTableDropConstraintBuilder;
13
+ toOperationNode(): AlterTableNode;
14
+ compile(): CompiledQuery;
15
+ execute(): Promise<void>;
16
+ }
17
+ export interface AlterTableDropConstraintBuilderProps {
18
+ readonly queryId: QueryId;
19
+ readonly executor: QueryExecutor;
20
+ readonly node: AlterTableNode;
21
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AlterTableDropConstraintBuilder = void 0;
4
+ const alter_table_node_js_1 = require("../operation-node/alter-table-node.js");
5
+ const drop_constraint_node_js_1 = require("../operation-node/drop-constraint-node.js");
6
+ const object_utils_js_1 = require("../util/object-utils.js");
7
+ const prevent_await_js_1 = require("../util/prevent-await.js");
8
+ class AlterTableDropConstraintBuilder {
9
+ #props;
10
+ constructor(props) {
11
+ this.#props = (0, object_utils_js_1.freeze)(props);
12
+ }
13
+ ifExists() {
14
+ return new AlterTableDropConstraintBuilder({
15
+ ...this.#props,
16
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
17
+ dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {
18
+ ifExists: true,
19
+ }),
20
+ }),
21
+ });
22
+ }
23
+ cascade() {
24
+ return new AlterTableDropConstraintBuilder({
25
+ ...this.#props,
26
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
27
+ dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {
28
+ modifier: 'cascade',
29
+ }),
30
+ }),
31
+ });
32
+ }
33
+ restrict() {
34
+ return new AlterTableDropConstraintBuilder({
35
+ ...this.#props,
36
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
37
+ dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {
38
+ modifier: 'restrict',
39
+ }),
40
+ }),
41
+ });
42
+ }
43
+ toOperationNode() {
44
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
45
+ }
46
+ compile() {
47
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
48
+ }
49
+ async execute() {
50
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
51
+ }
52
+ }
53
+ exports.AlterTableDropConstraintBuilder = AlterTableDropConstraintBuilder;
54
+ (0, prevent_await_js_1.preventAwait)(AlterTableDropConstraintBuilder, "don't await AlterTableDropConstraintBuilder instances directly. To execute the query you need to call `execute`");
@@ -0,0 +1,18 @@
1
+ import { AlterTableNode } from '../operation-node/alter-table-node.js';
2
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
+ import { QueryExecutor } from '../query-executor/query-executor.js';
5
+ import { Compilable } from '../util/compilable.js';
6
+ import { QueryId } from '../util/query-id.js';
7
+ export declare class AlterTableExecutor implements OperationNodeSource, Compilable {
8
+ #private;
9
+ constructor(props: AlterTableExecutorProps);
10
+ toOperationNode(): AlterTableNode;
11
+ compile(): CompiledQuery;
12
+ execute(): Promise<void>;
13
+ }
14
+ export interface AlterTableExecutorProps {
15
+ readonly queryId: QueryId;
16
+ readonly executor: QueryExecutor;
17
+ readonly node: AlterTableNode;
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AlterTableExecutor = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const prevent_await_js_1 = require("../util/prevent-await.js");
6
+ class AlterTableExecutor {
7
+ #props;
8
+ constructor(props) {
9
+ this.#props = (0, object_utils_js_1.freeze)(props);
10
+ }
11
+ toOperationNode() {
12
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
13
+ }
14
+ compile() {
15
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
16
+ }
17
+ async execute() {
18
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
19
+ }
20
+ }
21
+ exports.AlterTableExecutor = AlterTableExecutor;
22
+ (0, prevent_await_js_1.preventAwait)(AlterTableExecutor, "don't await AlterTableExecutor instances directly. To execute the query you need to call `execute`");
@@ -0,0 +1,3 @@
1
+ export interface KyselyTypeError<E extends string> {
2
+ readonly __kyselyTypeError__: E;
3
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -29,7 +29,7 @@ export class MysqlIntrospector {
29
29
  ])
30
30
  .where('table_schema', '=', sql `database()`)
31
31
  .orderBy('table_name')
32
- .orderBy('column_name')
32
+ .orderBy('ordinal_position')
33
33
  .castTo();
34
34
  if (!options.withInternalKyselyTables) {
35
35
  query = query
@@ -55,7 +55,7 @@ export class PostgresIntrospector {
55
55
  .where('a.attisdropped', '!=', true)
56
56
  .orderBy('ns.nspname')
57
57
  .orderBy('c.relname')
58
- .orderBy('a.attname')
58
+ .orderBy('a.attnum')
59
59
  .castTo();
60
60
  if (!options.withInternalKyselyTables) {
61
61
  query = query
@@ -50,7 +50,7 @@ export class SqliteIntrospector {
50
50
  const columns = await db
51
51
  .selectFrom(sql `pragma_table_info(${table})`.as('table_info'))
52
52
  .select(['name', 'type', 'notnull', 'dflt_value'])
53
- .orderBy('name')
53
+ .orderBy('cid')
54
54
  .execute();
55
55
  return {
56
56
  name: table,
@@ -172,7 +172,7 @@ export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.j
172
172
  export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
173
173
  export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
174
174
  export { InsertObject } from './parser/insert-values-parser.js';
175
- export { MutationObject } from './parser/update-set-parser.js';
175
+ export { UpdateObject } from './parser/update-set-parser.js';
176
176
  export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
177
177
  export { ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList, } from './parser/binary-operation-parser.js';
178
178
  export { ExistsExpression } from './parser/unary-operation-parser.js';
@@ -25,4 +25,6 @@ export declare const OnConflictNode: Readonly<{
25
25
  cloneWithIndexOrWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
26
26
  cloneWithUpdateWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
27
27
  cloneWithUpdateOrWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
28
+ cloneWithoutIndexWhere(node: OnConflictNode): OnConflictNode;
29
+ cloneWithoutUpdateWhere(node: OnConflictNode): OnConflictNode;
28
30
  }>;
@@ -51,4 +51,16 @@ export const OnConflictNode = freeze({
51
51
  : WhereNode.create(operation),
52
52
  });
53
53
  },
54
+ cloneWithoutIndexWhere(node) {
55
+ return freeze({
56
+ ...node,
57
+ indexWhere: undefined,
58
+ });
59
+ },
60
+ cloneWithoutUpdateWhere(node) {
61
+ return freeze({
62
+ ...node,
63
+ updateWhere: undefined,
64
+ });
65
+ },
54
66
  });
@@ -17,4 +17,5 @@ export declare const QueryNode: Readonly<{
17
17
  cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, operation: OperationNode): T_1;
18
18
  cloneWithJoin<T_2 extends FilterableQueryNode>(node: T_2, join: JoinNode): T_2;
19
19
  cloneWithReturning<T_3 extends MutatingQueryNode>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
20
+ cloneWithoutWhere<T_4 extends FilterableQueryNode>(node: T_4): T_4;
20
21
  }>;
@@ -46,4 +46,10 @@ export const QueryNode = freeze({
46
46
  : ReturningNode.create(selections),
47
47
  });
48
48
  },
49
+ cloneWithoutWhere(node) {
50
+ return freeze({
51
+ ...node,
52
+ where: undefined,
53
+ });
54
+ },
49
55
  });
@@ -50,4 +50,8 @@ export declare const SelectQueryNode: Readonly<{
50
50
  cloneWithOrHaving(selectNode: SelectQueryNode, operation: OperationNode): SelectQueryNode;
51
51
  cloneWithSetOperation(selectNode: SelectQueryNode, setOperation: SetOperationNode): SelectQueryNode;
52
52
  cloneWithExplain(selectNode: SelectQueryNode, explain: ExplainNode): SelectQueryNode;
53
+ cloneWithoutSelections(select: SelectQueryNode): SelectQueryNode;
54
+ cloneWithoutLimit(select: SelectQueryNode): SelectQueryNode;
55
+ cloneWithoutOffset(select: SelectQueryNode): SelectQueryNode;
56
+ cloneWithoutOrderBy(select: SelectQueryNode): SelectQueryNode;
53
57
  }>;
@@ -108,4 +108,28 @@ export const SelectQueryNode = freeze({
108
108
  explain,
109
109
  });
110
110
  },
111
+ cloneWithoutSelections(select) {
112
+ return freeze({
113
+ ...select,
114
+ selections: [],
115
+ });
116
+ },
117
+ cloneWithoutLimit(select) {
118
+ return freeze({
119
+ ...select,
120
+ limit: undefined,
121
+ });
122
+ },
123
+ cloneWithoutOffset(select) {
124
+ return freeze({
125
+ ...select,
126
+ offset: undefined,
127
+ });
128
+ },
129
+ cloneWithoutOrderBy(select) {
130
+ return freeze({
131
+ ...select,
132
+ orderBy: undefined,
133
+ });
134
+ },
111
135
  });
@@ -7,7 +7,7 @@ import { HavingInterface } from '../query-builder/having-interface.js';
7
7
  import { OperationNode } from '../operation-node/operation-node.js';
8
8
  import { Expression } from '../expression/expression.js';
9
9
  export declare type OperandValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
10
- export declare type OperandValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
10
+ export declare type OperandValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE> | null>;
11
11
  export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
12
12
  export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
13
13
  export declare type ComparisonOperatorExpression = ComparisonOperator | Expression<any>;
@@ -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, TM extends keyof DB> = {
5
- [C in UpdateKeys<DB[TM]>]?: ValueExpression<DB, TB, UpdateType<DB[TM][C]>> | undefined;
4
+ export declare type UpdateObject<DB, TB extends keyof DB, UT extends keyof DB> = {
5
+ [C in UpdateKeys<DB[UT]>]?: ValueExpression<DB, TB, UpdateType<DB[UT][C]>> | undefined;
6
6
  };
7
- export declare function parseUpdateObject(row: MutationObject<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
7
+ export declare function parseUpdateObject(update: UpdateObject<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
@@ -2,8 +2,8 @@
2
2
  import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
4
4
  import { parseValueExpression } from './value-parser.js';
5
- export function parseUpdateObject(row) {
6
- return Object.entries(row)
5
+ export function parseUpdateObject(update) {
6
+ return Object.entries(update)
7
7
  .filter(([_, value]) => value !== undefined)
8
8
  .map(([key, value]) => {
9
9
  return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(value));
@@ -21,6 +21,7 @@ import { Explainable, ExplainFormat } from '../util/explainable.js';
21
21
  import { AliasedExpression, Expression } from '../expression/expression.js';
22
22
  import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
23
23
  import { ExistsExpression } from '../parser/unary-operation-parser.js';
24
+ import { KyselyTypeError } from '../util/type-error.js';
24
25
  export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable {
25
26
  #private;
26
27
  constructor(props: DeleteQueryBuilderProps);
@@ -408,6 +409,25 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
408
409
  * Just like {@link whereExists} but creates an `or not exists` clause.
409
410
  */
410
411
  orWhereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
412
+ /**
413
+ * Clears all where clauses from the query.
414
+ *
415
+ * ### Examples
416
+ *
417
+ * ```ts
418
+ * db.selectFrom('person')
419
+ * .selectAll()
420
+ * .where('id','=',42)
421
+ * .clearWhere()
422
+ * ```
423
+ *
424
+ * The generated SQL(PostgreSQL):
425
+ *
426
+ * ```sql
427
+ * select * from "person"
428
+ * ```
429
+ */
430
+ clearWhere(): DeleteQueryBuilder<DB, TB, O>;
411
431
  /**
412
432
  * Joins another table to the query using an inner join.
413
433
  *
@@ -662,7 +682,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
662
682
  *
663
683
  * ### Examples
664
684
  *
665
- * The next example uses a helper funtion `log` to log a query:
685
+ * The next example uses a helper function `log` to log a query:
666
686
  *
667
687
  * ```ts
668
688
  * function log<T extends Compilable>(qb: T): T {
@@ -719,6 +739,48 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
719
739
  * don't support your use case.
720
740
  */
721
741
  castTo<T>(): DeleteQueryBuilder<DB, TB, T>;
742
+ /**
743
+ * Asserts that query's output row type equals the given type `T`.
744
+ *
745
+ * This method can be used to simplify excessively complex types to make typescript happy
746
+ * and much faster.
747
+ *
748
+ * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
749
+ * for typescript and you get errors like this:
750
+ *
751
+ * ```
752
+ * error TS2589: Type instantiation is excessively deep and possibly infinite.
753
+ * ```
754
+ *
755
+ * In these case you can often use this method to help typescript a little bit. When you use this
756
+ * method to assert the output type of a query, Kysely can drop the complex output type that
757
+ * consists of multiple nested helper types and replace it with the simple asserted type.
758
+ *
759
+ * Using this method doesn't reduce type safety at all. You have to pass in a type that is
760
+ * structurally equal to the current type.
761
+ *
762
+ * ### Examples
763
+ *
764
+ * ```ts
765
+ * const result = await db
766
+ * .with('deleted_person', (qb) => qb
767
+ * .deleteFrom('person')
768
+ * .where('id', '=', person.id)
769
+ * .returning('first_name')
770
+ * .assertType<{ first_name: string }>()
771
+ * )
772
+ * .with('deleted_pet', (qb) => qb
773
+ * .deleteFrom('pet')
774
+ * .where('owner_id', '=', person.id)
775
+ * .returning(['name as pet_name', 'species'])
776
+ * .assertType<{ pet_name: string, species: Species }>()
777
+ * )
778
+ * .selectFrom(['deleted_person', 'deleted_pet'])
779
+ * .selectAll()
780
+ * .executeTakeFirstOrThrow()
781
+ * ```
782
+ */
783
+ assertType<T extends O>(): O extends T ? DeleteQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
722
784
  /**
723
785
  * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.
724
786
  */
@@ -65,6 +65,12 @@ export class DeleteQueryBuilder {
65
65
  queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
66
66
  });
67
67
  }
68
+ clearWhere() {
69
+ return new DeleteQueryBuilder({
70
+ ...this.#props,
71
+ queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),
72
+ });
73
+ }
68
74
  innerJoin(...args) {
69
75
  return new DeleteQueryBuilder({
70
76
  ...this.#props,
@@ -173,7 +179,7 @@ export class DeleteQueryBuilder {
173
179
  *
174
180
  * ### Examples
175
181
  *
176
- * The next example uses a helper funtion `log` to log a query:
182
+ * The next example uses a helper function `log` to log a query:
177
183
  *
178
184
  * ```ts
179
185
  * function log<T extends Compilable>(qb: T): T {
@@ -241,6 +247,50 @@ export class DeleteQueryBuilder {
241
247
  castTo() {
242
248
  return new DeleteQueryBuilder(this.#props);
243
249
  }
250
+ /**
251
+ * Asserts that query's output row type equals the given type `T`.
252
+ *
253
+ * This method can be used to simplify excessively complex types to make typescript happy
254
+ * and much faster.
255
+ *
256
+ * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
257
+ * for typescript and you get errors like this:
258
+ *
259
+ * ```
260
+ * error TS2589: Type instantiation is excessively deep and possibly infinite.
261
+ * ```
262
+ *
263
+ * In these case you can often use this method to help typescript a little bit. When you use this
264
+ * method to assert the output type of a query, Kysely can drop the complex output type that
265
+ * consists of multiple nested helper types and replace it with the simple asserted type.
266
+ *
267
+ * Using this method doesn't reduce type safety at all. You have to pass in a type that is
268
+ * structurally equal to the current type.
269
+ *
270
+ * ### Examples
271
+ *
272
+ * ```ts
273
+ * const result = await db
274
+ * .with('deleted_person', (qb) => qb
275
+ * .deleteFrom('person')
276
+ * .where('id', '=', person.id)
277
+ * .returning('first_name')
278
+ * .assertType<{ first_name: string }>()
279
+ * )
280
+ * .with('deleted_pet', (qb) => qb
281
+ * .deleteFrom('pet')
282
+ * .where('owner_id', '=', person.id)
283
+ * .returning(['name as pet_name', 'species'])
284
+ * .assertType<{ pet_name: string, species: Species }>()
285
+ * )
286
+ * .selectFrom(['deleted_person', 'deleted_pet'])
287
+ * .selectAll()
288
+ * .executeTakeFirstOrThrow()
289
+ * ```
290
+ */
291
+ assertType() {
292
+ return new DeleteQueryBuilder(this.#props);
293
+ }
244
294
  /**
245
295
  * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.
246
296
  */