kysely 0.23.3 → 0.23.5

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 (118) hide show
  1. package/README.md +25 -25
  2. package/dist/cjs/dialect/database-introspector.d.ts +4 -2
  3. package/dist/cjs/dialect/dialect-adapter-base.d.ts +32 -6
  4. package/dist/cjs/dialect/dialect-adapter.d.ts +50 -8
  5. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +32 -6
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  7. package/dist/cjs/dialect/mysql/mysql-introspector.js +21 -15
  8. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +32 -6
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -3
  11. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  12. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  13. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +8 -7
  14. package/dist/cjs/index.d.ts +1 -0
  15. package/dist/cjs/index.js +1 -0
  16. package/dist/cjs/migration/migrator.d.ts +8 -3
  17. package/dist/cjs/migration/migrator.js +15 -5
  18. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -2
  19. package/dist/cjs/operation-node/aggregate-function-node.js +2 -2
  20. package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
  21. package/dist/cjs/operation-node/delete-query-node.d.ts +4 -1
  22. package/dist/cjs/operation-node/delete-query-node.js +11 -2
  23. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  24. package/dist/cjs/operation-node/operation-node-transformer.js +10 -1
  25. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  26. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  27. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  28. package/dist/cjs/operation-node/operator-node.d.ts +1 -1
  29. package/dist/cjs/operation-node/operator-node.js +1 -0
  30. package/dist/cjs/operation-node/using-node.d.ts +13 -0
  31. package/dist/cjs/operation-node/using-node.js +24 -0
  32. package/dist/cjs/parser/expression-parser.js +1 -1
  33. package/dist/cjs/parser/table-parser.d.ts +1 -0
  34. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  35. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  36. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +10 -4
  37. package/dist/cjs/query-builder/delete-query-builder.d.ts +103 -11
  38. package/dist/cjs/query-builder/delete-query-builder.js +40 -9
  39. package/dist/cjs/query-builder/function-module.d.ts +273 -39
  40. package/dist/cjs/query-builder/function-module.js +156 -34
  41. package/dist/cjs/query-builder/insert-query-builder.d.ts +25 -10
  42. package/dist/cjs/query-builder/insert-query-builder.js +32 -9
  43. package/dist/cjs/query-builder/select-query-builder.d.ts +51 -34
  44. package/dist/cjs/query-builder/select-query-builder.js +53 -29
  45. package/dist/cjs/query-builder/update-query-builder.d.ts +26 -10
  46. package/dist/cjs/query-builder/update-query-builder.js +33 -9
  47. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  48. package/dist/cjs/query-compiler/default-query-compiler.js +12 -1
  49. package/dist/cjs/query-creator.d.ts +29 -0
  50. package/dist/cjs/query-creator.js +2 -21
  51. package/dist/cjs/raw-builder/raw-builder.d.ts +4 -0
  52. package/dist/cjs/raw-builder/raw-builder.js +8 -2
  53. package/dist/cjs/schema/alter-table-builder.d.ts +5 -1
  54. package/dist/cjs/schema/alter-table-builder.js +8 -2
  55. package/dist/cjs/schema/create-index-builder.d.ts +6 -0
  56. package/dist/cjs/schema/create-index-builder.js +13 -0
  57. package/dist/cjs/schema/create-table-builder.d.ts +6 -2
  58. package/dist/cjs/schema/create-table-builder.js +9 -3
  59. package/dist/cjs/util/type-utils.d.ts +20 -1
  60. package/dist/esm/dialect/database-introspector.d.ts +4 -2
  61. package/dist/esm/dialect/dialect-adapter-base.d.ts +32 -6
  62. package/dist/esm/dialect/dialect-adapter.d.ts +50 -8
  63. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +32 -6
  64. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  65. package/dist/esm/dialect/mysql/mysql-introspector.js +21 -15
  66. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +32 -6
  67. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  68. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -3
  69. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  70. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  71. package/dist/esm/dialect/sqlite/sqlite-introspector.js +8 -7
  72. package/dist/esm/index.d.ts +1 -0
  73. package/dist/esm/index.js +1 -0
  74. package/dist/esm/migration/migrator.d.ts +8 -3
  75. package/dist/esm/migration/migrator.js +15 -5
  76. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -2
  77. package/dist/esm/operation-node/aggregate-function-node.js +2 -2
  78. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  79. package/dist/esm/operation-node/delete-query-node.d.ts +4 -1
  80. package/dist/esm/operation-node/delete-query-node.js +11 -2
  81. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  82. package/dist/esm/operation-node/operation-node-transformer.js +10 -1
  83. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  84. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  85. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  86. package/dist/esm/operation-node/operator-node.d.ts +1 -1
  87. package/dist/esm/operation-node/operator-node.js +1 -0
  88. package/dist/esm/operation-node/using-node.d.ts +13 -0
  89. package/dist/esm/operation-node/using-node.js +22 -0
  90. package/dist/esm/parser/expression-parser.js +2 -2
  91. package/dist/esm/parser/table-parser.d.ts +1 -0
  92. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  93. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  94. package/dist/esm/plugin/camel-case/camel-case-plugin.js +10 -4
  95. package/dist/esm/query-builder/delete-query-builder.d.ts +103 -11
  96. package/dist/esm/query-builder/delete-query-builder.js +40 -9
  97. package/dist/esm/query-builder/function-module.d.ts +273 -39
  98. package/dist/esm/query-builder/function-module.js +156 -34
  99. package/dist/esm/query-builder/insert-query-builder.d.ts +25 -10
  100. package/dist/esm/query-builder/insert-query-builder.js +33 -10
  101. package/dist/esm/query-builder/select-query-builder.d.ts +51 -34
  102. package/dist/esm/query-builder/select-query-builder.js +53 -29
  103. package/dist/esm/query-builder/update-query-builder.d.ts +26 -10
  104. package/dist/esm/query-builder/update-query-builder.js +33 -9
  105. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  106. package/dist/esm/query-compiler/default-query-compiler.js +12 -1
  107. package/dist/esm/query-creator.d.ts +29 -0
  108. package/dist/esm/query-creator.js +2 -21
  109. package/dist/esm/raw-builder/raw-builder.d.ts +4 -0
  110. package/dist/esm/raw-builder/raw-builder.js +8 -2
  111. package/dist/esm/schema/alter-table-builder.d.ts +5 -1
  112. package/dist/esm/schema/alter-table-builder.js +8 -2
  113. package/dist/esm/schema/create-index-builder.d.ts +6 -0
  114. package/dist/esm/schema/create-index-builder.js +13 -0
  115. package/dist/esm/schema/create-table-builder.d.ts +6 -2
  116. package/dist/esm/schema/create-table-builder.js +9 -3
  117. package/dist/esm/util/type-utils.d.ts +20 -1
  118. package/package.json +1 -1
@@ -198,6 +198,8 @@ export declare class QueryCreator<DB> {
198
198
  *
199
199
  * ### Examples
200
200
  *
201
+ * Deleting person with id 1:
202
+ *
201
203
  * ```ts
202
204
  * const result = await db
203
205
  * .deleteFrom('person')
@@ -206,7 +208,34 @@ export declare class QueryCreator<DB> {
206
208
  *
207
209
  * console.log(result.numDeletedRows)
208
210
  * ```
211
+ *
212
+ * The generated SQL (PostgreSQL):
213
+ *
214
+ * ```sql
215
+ * delete from "person" where "person"."id" = $1
216
+ * ```
217
+ *
218
+ * Some databases such as MySQL support deleting from multiple tables:
219
+ *
220
+ * ```ts
221
+ * const result = await db
222
+ * .deleteFrom(['person', 'pet'])
223
+ * .using('person')
224
+ * .innerJoin('pet', 'pet.owner_id', '=', 'person.id')
225
+ * .where('person.id', '=', 1)
226
+ * .executeTakeFirst()
227
+ * ```
228
+ *
229
+ * The generated SQL (MySQL):
230
+ *
231
+ * ```sql
232
+ * delete from `person`, `pet`
233
+ * using `person`
234
+ * inner join `pet` on `pet`.`owner_id` = `person`.`id`
235
+ * where `person`.`id` = ?
236
+ * ```
209
237
  */
238
+ deleteFrom<TR extends TableReference<DB>>(tables: TR[]): DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>;
210
239
  deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>;
211
240
  /**
212
241
  * Creates an update query.
@@ -103,30 +103,11 @@ export class QueryCreator {
103
103
  queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode, true),
104
104
  });
105
105
  }
106
- /**
107
- * Creates a delete query.
108
- *
109
- * See the {@link DeleteQueryBuilder.where} method for examples on how to specify
110
- * a where clause for the delete operation.
111
- *
112
- * The return value of the query is an instance of {@link DeleteResult}.
113
- *
114
- * ### Examples
115
- *
116
- * ```ts
117
- * const result = await db
118
- * .deleteFrom('person')
119
- * .where('person.id', '=', 1)
120
- * .executeTakeFirst()
121
- *
122
- * console.log(result.numDeletedRows)
123
- * ```
124
- */
125
- deleteFrom(table) {
106
+ deleteFrom(tables) {
126
107
  return new DeleteQueryBuilder({
127
108
  queryId: createQueryId(),
128
109
  executor: this.#props.executor,
129
- queryNode: DeleteQueryNode.create(parseTableExpression(table), this.#props.withNode),
110
+ queryNode: DeleteQueryNode.create(parseTableExpressionOrList(tables), this.#props.withNode),
130
111
  });
131
112
  }
132
113
  /**
@@ -93,6 +93,10 @@ export declare class RawBuilder<O> implements Expression<O> {
93
93
  * This method call doesn't change the SQL in any way. This methods simply
94
94
  * returns a copy of this `RawBuilder` with a new output type.
95
95
  */
96
+ $castTo<T>(): RawBuilder<T>;
97
+ /**
98
+ * @deprecated Use `$castTo` instead.
99
+ */
96
100
  castTo<T>(): RawBuilder<T>;
97
101
  /**
98
102
  * Adds a plugin for this SQL snippet.
@@ -29,9 +29,15 @@ export class RawBuilder {
29
29
  * This method call doesn't change the SQL in any way. This methods simply
30
30
  * returns a copy of this `RawBuilder` with a new output type.
31
31
  */
32
- castTo() {
32
+ $castTo() {
33
33
  return new RawBuilder({ ...this.#props });
34
34
  }
35
+ /**
36
+ * @deprecated Use `$castTo` instead.
37
+ */
38
+ castTo() {
39
+ return this.$castTo();
40
+ }
35
41
  /**
36
42
  * Adds a plugin for this SQL snippet.
37
43
  */
@@ -65,7 +71,7 @@ export class RawBuilder {
65
71
  export function isRawBuilder(obj) {
66
72
  return (isObject(obj) &&
67
73
  isFunction(obj.as) &&
68
- isFunction(obj.castTo) &&
74
+ isFunction(obj.$castTo) &&
69
75
  isFunction(obj.withPlugin) &&
70
76
  isFunction(obj.toOperationNode) &&
71
77
  isFunction(obj.execute));
@@ -52,7 +52,11 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
52
52
  /**
53
53
  * Calls the given function passing `this` as the only argument.
54
54
  *
55
- * See {@link CreateTableBuilder.call}
55
+ * See {@link CreateTableBuilder.$call}
56
+ */
57
+ $call<T>(func: (qb: this) => T): T;
58
+ /**
59
+ * @deprecated Use `$call` instead
56
60
  */
57
61
  call<T>(func: (qb: this) => T): T;
58
62
  }
@@ -126,11 +126,17 @@ export class AlterTableBuilder {
126
126
  /**
127
127
  * Calls the given function passing `this` as the only argument.
128
128
  *
129
- * See {@link CreateTableBuilder.call}
129
+ * See {@link CreateTableBuilder.$call}
130
130
  */
131
- call(func) {
131
+ $call(func) {
132
132
  return func(this);
133
133
  }
134
+ /**
135
+ * @deprecated Use `$call` instead
136
+ */
137
+ call(func) {
138
+ return this.$call(func);
139
+ }
134
140
  }
135
141
  export class AlterTableColumnAlteringBuilder {
136
142
  #props;
@@ -8,6 +8,12 @@ import { Expression } from '../expression/expression.js';
8
8
  export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
9
9
  #private;
10
10
  constructor(props: CreateIndexBuilderProps);
11
+ /**
12
+ * Adds the "if not exists" modifier.
13
+ *
14
+ * If the index already exists, no error is thrown if this method has been called.
15
+ */
16
+ ifNotExists(): CreateIndexBuilder;
11
17
  /**
12
18
  * Makes the index unique.
13
19
  */
@@ -11,6 +11,19 @@ export class CreateIndexBuilder {
11
11
  constructor(props) {
12
12
  this.#props = freeze(props);
13
13
  }
14
+ /**
15
+ * Adds the "if not exists" modifier.
16
+ *
17
+ * If the index already exists, no error is thrown if this method has been called.
18
+ */
19
+ ifNotExists() {
20
+ return new CreateIndexBuilder({
21
+ ...this.#props,
22
+ node: CreateIndexNode.cloneWith(this.#props.node, {
23
+ ifNotExists: true,
24
+ }),
25
+ });
26
+ }
14
27
  /**
15
28
  * Makes the index unique.
16
29
  */
@@ -211,7 +211,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
211
211
  * ```ts
212
212
  * db.schema
213
213
  * .createTable('test')
214
- * .call((builder) => builder.addColumn('id', 'integer'))
214
+ * .$call((builder) => builder.addColumn('id', 'integer'))
215
215
  * .execute()
216
216
  * ```
217
217
  *
@@ -231,10 +231,14 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
231
231
  *
232
232
  * db.schema
233
233
  * .createTable('test')
234
- * .call(addDefaultColumns)
234
+ * .$call(addDefaultColumns)
235
235
  * .execute()
236
236
  * ```
237
237
  */
238
+ $call<T>(func: (qb: this) => T): T;
239
+ /**
240
+ * @deprecated Use `$call` instead
241
+ */
238
242
  call<T>(func: (qb: this) => T): T;
239
243
  toOperationNode(): CreateTableNode;
240
244
  compile(): CompiledQuery;
@@ -276,7 +276,7 @@ export class CreateTableBuilder {
276
276
  * ```ts
277
277
  * db.schema
278
278
  * .createTable('test')
279
- * .call((builder) => builder.addColumn('id', 'integer'))
279
+ * .$call((builder) => builder.addColumn('id', 'integer'))
280
280
  * .execute()
281
281
  * ```
282
282
  *
@@ -296,13 +296,19 @@ export class CreateTableBuilder {
296
296
  *
297
297
  * db.schema
298
298
  * .createTable('test')
299
- * .call(addDefaultColumns)
299
+ * .$call(addDefaultColumns)
300
300
  * .execute()
301
301
  * ```
302
302
  */
303
- call(func) {
303
+ $call(func) {
304
304
  return func(this);
305
305
  }
306
+ /**
307
+ * @deprecated Use `$call` instead
308
+ */
309
+ call(func) {
310
+ return this.$call(func);
311
+ }
306
312
  toOperationNode() {
307
313
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
308
314
  }
@@ -96,9 +96,22 @@ export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
96
96
  * Extracts the item type of an array.
97
97
  */
98
98
  export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
99
+ /**
100
+ * Any select query builder.
101
+ */
99
102
  export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
100
- export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
103
+ export declare type SimplifySingleResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O> | undefined;
104
+ export declare type SimplifyResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O>;
105
+ export declare type Simplify<T> = {
106
+ [K in keyof T]: T[K];
107
+ } & {};
108
+ /**
109
+ * Represents a database row whose column names and their types are unknown.
110
+ */
101
111
  export declare type UnknownRow = Record<string, unknown>;
112
+ /**
113
+ * Makes all properties of object type `T` nullable.
114
+ */
102
115
  export declare type Nullable<T> = {
103
116
  [P in keyof T]: T[P] | null;
104
117
  };
@@ -123,5 +136,11 @@ export declare type Nullable<T> = {
123
136
  * // { name: string, age: number, species?: 'cat' | 'dog' }
124
137
  */
125
138
  export declare type MergePartial<T1, T2> = T1 & Partial<Omit<T2, keyof T1>>;
139
+ /**
140
+ * Evaluates to `true` if `T` is `never`.
141
+ */
126
142
  export declare type IsNever<T> = [T] extends [never] ? true : false;
143
+ /**
144
+ * Evaluates to `true` if the types `T` and `U` are equal.
145
+ */
127
146
  export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.23.3",
3
+ "version": "0.23.5",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",