kysely 0.27.4 → 0.27.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 (209) hide show
  1. package/.renovaterc.json +3 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/deno.check.d.ts +86 -0
  4. package/deno.check.json +21 -0
  5. package/dist/cjs/dialect/dialect-adapter-base.d.ts +11 -2
  6. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -2
  7. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +11 -2
  8. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  9. package/dist/cjs/dialect/mssql/mssql-driver.js +20 -13
  10. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
  11. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  12. package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
  13. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
  14. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  15. package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
  16. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
  17. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  18. package/dist/cjs/driver/dummy-driver.d.ts +13 -12
  19. package/dist/cjs/driver/dummy-driver.js +13 -12
  20. package/dist/cjs/dynamic/dynamic.d.ts +6 -6
  21. package/dist/cjs/dynamic/dynamic.js +6 -6
  22. package/dist/cjs/expression/expression-builder.d.ts +152 -61
  23. package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
  24. package/dist/cjs/expression/expression.d.ts +40 -5
  25. package/dist/cjs/helpers/mssql.d.ts +74 -14
  26. package/dist/cjs/helpers/mssql.js +74 -14
  27. package/dist/cjs/helpers/mysql.d.ts +14 -10
  28. package/dist/cjs/helpers/mysql.js +14 -10
  29. package/dist/cjs/helpers/postgres.d.ts +7 -4
  30. package/dist/cjs/helpers/postgres.js +7 -4
  31. package/dist/cjs/helpers/sqlite.d.ts +41 -16
  32. package/dist/cjs/helpers/sqlite.js +41 -16
  33. package/dist/cjs/kysely.d.ts +99 -41
  34. package/dist/cjs/kysely.js +60 -36
  35. package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
  36. package/dist/cjs/migration/file-migration-provider.js +2 -2
  37. package/dist/cjs/migration/migrator.d.ts +82 -14
  38. package/dist/cjs/migration/migrator.js +82 -14
  39. package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
  40. package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
  41. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/data-type-node.js +12 -0
  43. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -0
  44. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
  45. package/dist/cjs/operation-node/merge-query-node.d.ts +1 -0
  46. package/dist/cjs/operation-node/operation-node-transformer.d.ts +9 -3
  47. package/dist/cjs/operation-node/operation-node-transformer.js +14 -3
  48. package/dist/cjs/operation-node/query-node.d.ts +4 -0
  49. package/dist/cjs/operation-node/query-node.js +8 -0
  50. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  51. package/dist/cjs/operation-node/select-query-node.js +0 -8
  52. package/dist/cjs/operation-node/update-query-node.d.ts +1 -0
  53. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  54. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +24 -19
  55. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  56. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  57. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  58. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  59. package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
  60. package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
  61. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  62. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  63. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  64. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
  65. package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
  66. package/dist/cjs/query-builder/delete-query-builder.d.ts +137 -45
  67. package/dist/cjs/query-builder/delete-query-builder.js +76 -26
  68. package/dist/cjs/query-builder/function-module.d.ts +35 -88
  69. package/dist/cjs/query-builder/insert-query-builder.d.ts +239 -65
  70. package/dist/cjs/query-builder/insert-query-builder.js +188 -52
  71. package/dist/cjs/query-builder/insert-result.d.ts +10 -5
  72. package/dist/cjs/query-builder/insert-result.js +10 -5
  73. package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
  74. package/dist/cjs/query-builder/json-path-builder.js +8 -5
  75. package/dist/cjs/query-builder/merge-query-builder.d.ts +159 -21
  76. package/dist/cjs/query-builder/merge-query-builder.js +68 -6
  77. package/dist/cjs/query-builder/on-conflict-builder.d.ts +51 -18
  78. package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
  79. package/dist/cjs/query-builder/output-interface.d.ts +50 -7
  80. package/dist/cjs/query-builder/returning-interface.d.ts +5 -5
  81. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
  82. package/dist/cjs/query-builder/select-query-builder.d.ts +295 -63
  83. package/dist/cjs/query-builder/select-query-builder.js +7 -7
  84. package/dist/cjs/query-builder/update-query-builder.d.ts +138 -29
  85. package/dist/cjs/query-builder/update-query-builder.js +75 -10
  86. package/dist/cjs/query-builder/update-result.d.ts +2 -2
  87. package/dist/cjs/query-builder/update-result.js +2 -2
  88. package/dist/cjs/query-builder/where-interface.d.ts +5 -1
  89. package/dist/cjs/query-compiler/default-query-compiler.js +20 -0
  90. package/dist/cjs/query-creator.d.ts +66 -18
  91. package/dist/cjs/query-creator.js +2 -2
  92. package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
  93. package/dist/cjs/raw-builder/sql.d.ts +26 -7
  94. package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
  95. package/dist/cjs/schema/alter-column-builder.js +17 -3
  96. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +43 -9
  97. package/dist/cjs/schema/alter-table-add-index-builder.js +26 -9
  98. package/dist/cjs/schema/column-definition-builder.d.ts +283 -26
  99. package/dist/cjs/schema/column-definition-builder.js +283 -26
  100. package/dist/cjs/schema/create-table-builder.d.ts +86 -33
  101. package/dist/cjs/schema/create-table-builder.js +86 -33
  102. package/dist/cjs/util/column-type.d.ts +5 -9
  103. package/dist/cjs/util/require-all-props.d.ts +4 -2
  104. package/dist/cjs/util/require-all-props.js +4 -2
  105. package/dist/cjs/util/streamable.d.ts +1 -1
  106. package/dist/cjs/util/type-utils.d.ts +4 -2
  107. package/dist/esm/dialect/dialect-adapter-base.d.ts +11 -2
  108. package/dist/esm/dialect/dialect-adapter.d.ts +11 -2
  109. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +11 -2
  110. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  111. package/dist/esm/dialect/mssql/mssql-driver.js +20 -13
  112. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
  113. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  114. package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
  115. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
  116. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  117. package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
  118. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
  119. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  120. package/dist/esm/driver/dummy-driver.d.ts +13 -12
  121. package/dist/esm/driver/dummy-driver.js +13 -12
  122. package/dist/esm/dynamic/dynamic.d.ts +6 -6
  123. package/dist/esm/dynamic/dynamic.js +6 -6
  124. package/dist/esm/expression/expression-builder.d.ts +152 -61
  125. package/dist/esm/expression/expression-wrapper.d.ts +92 -23
  126. package/dist/esm/expression/expression.d.ts +40 -5
  127. package/dist/esm/helpers/mssql.d.ts +74 -14
  128. package/dist/esm/helpers/mssql.js +74 -14
  129. package/dist/esm/helpers/mysql.d.ts +14 -10
  130. package/dist/esm/helpers/mysql.js +14 -10
  131. package/dist/esm/helpers/postgres.d.ts +7 -4
  132. package/dist/esm/helpers/postgres.js +7 -4
  133. package/dist/esm/helpers/sqlite.d.ts +41 -16
  134. package/dist/esm/helpers/sqlite.js +41 -16
  135. package/dist/esm/kysely.d.ts +99 -41
  136. package/dist/esm/kysely.js +60 -36
  137. package/dist/esm/migration/file-migration-provider.d.ts +2 -2
  138. package/dist/esm/migration/file-migration-provider.js +2 -2
  139. package/dist/esm/migration/migrator.d.ts +82 -14
  140. package/dist/esm/migration/migrator.js +82 -14
  141. package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
  142. package/dist/esm/operation-node/aggregate-function-node.js +9 -0
  143. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  144. package/dist/esm/operation-node/data-type-node.js +12 -0
  145. package/dist/esm/operation-node/delete-query-node.d.ts +1 -0
  146. package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
  147. package/dist/esm/operation-node/merge-query-node.d.ts +1 -0
  148. package/dist/esm/operation-node/operation-node-transformer.d.ts +9 -3
  149. package/dist/esm/operation-node/operation-node-transformer.js +14 -3
  150. package/dist/esm/operation-node/query-node.d.ts +4 -0
  151. package/dist/esm/operation-node/query-node.js +8 -0
  152. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  153. package/dist/esm/operation-node/select-query-node.js +0 -8
  154. package/dist/esm/operation-node/update-query-node.d.ts +1 -0
  155. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  156. package/dist/esm/plugin/camel-case/camel-case-plugin.js +24 -19
  157. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  158. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  159. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  160. package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  161. package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
  162. package/dist/esm/plugin/noop-plugin.d.ts +28 -6
  163. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  164. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  165. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  166. package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
  167. package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
  168. package/dist/esm/query-builder/delete-query-builder.d.ts +137 -45
  169. package/dist/esm/query-builder/delete-query-builder.js +76 -26
  170. package/dist/esm/query-builder/function-module.d.ts +35 -88
  171. package/dist/esm/query-builder/insert-query-builder.d.ts +239 -65
  172. package/dist/esm/query-builder/insert-query-builder.js +188 -52
  173. package/dist/esm/query-builder/insert-result.d.ts +10 -5
  174. package/dist/esm/query-builder/insert-result.js +10 -5
  175. package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
  176. package/dist/esm/query-builder/json-path-builder.js +8 -5
  177. package/dist/esm/query-builder/merge-query-builder.d.ts +159 -21
  178. package/dist/esm/query-builder/merge-query-builder.js +68 -6
  179. package/dist/esm/query-builder/on-conflict-builder.d.ts +51 -18
  180. package/dist/esm/query-builder/on-conflict-builder.js +41 -16
  181. package/dist/esm/query-builder/output-interface.d.ts +50 -7
  182. package/dist/esm/query-builder/returning-interface.d.ts +5 -5
  183. package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
  184. package/dist/esm/query-builder/select-query-builder.d.ts +295 -63
  185. package/dist/esm/query-builder/select-query-builder.js +7 -7
  186. package/dist/esm/query-builder/update-query-builder.d.ts +138 -29
  187. package/dist/esm/query-builder/update-query-builder.js +75 -10
  188. package/dist/esm/query-builder/update-result.d.ts +2 -2
  189. package/dist/esm/query-builder/update-result.js +2 -2
  190. package/dist/esm/query-builder/where-interface.d.ts +5 -1
  191. package/dist/esm/query-compiler/default-query-compiler.js +20 -0
  192. package/dist/esm/query-creator.d.ts +66 -18
  193. package/dist/esm/query-creator.js +2 -2
  194. package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
  195. package/dist/esm/raw-builder/sql.d.ts +26 -7
  196. package/dist/esm/schema/alter-column-builder.d.ts +17 -3
  197. package/dist/esm/schema/alter-column-builder.js +17 -3
  198. package/dist/esm/schema/alter-table-add-index-builder.d.ts +43 -9
  199. package/dist/esm/schema/alter-table-add-index-builder.js +26 -9
  200. package/dist/esm/schema/column-definition-builder.d.ts +283 -26
  201. package/dist/esm/schema/column-definition-builder.js +283 -26
  202. package/dist/esm/schema/create-table-builder.d.ts +86 -33
  203. package/dist/esm/schema/create-table-builder.js +86 -33
  204. package/dist/esm/util/column-type.d.ts +5 -9
  205. package/dist/esm/util/require-all-props.d.ts +4 -2
  206. package/dist/esm/util/require-all-props.js +4 -2
  207. package/dist/esm/util/streamable.d.ts +1 -1
  208. package/dist/esm/util/type-utils.d.ts +4 -2
  209. package/package.json +28 -23
@@ -204,6 +204,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
204
204
  if (isSubQuery && !merge_query_node_js_1.MergeQueryNode.is(rootQueryNode)) {
205
205
  this.append(')');
206
206
  }
207
+ if (node.endModifiers?.length) {
208
+ this.append(' ');
209
+ this.compileList(node.endModifiers, ' ');
210
+ }
207
211
  }
208
212
  visitValues(node) {
209
213
  this.append('values ');
@@ -259,6 +263,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
259
263
  if (isSubQuery) {
260
264
  this.append(')');
261
265
  }
266
+ if (node.endModifiers?.length) {
267
+ this.append(' ');
268
+ this.compileList(node.endModifiers, ' ');
269
+ }
262
270
  }
263
271
  visitReturning(node) {
264
272
  this.append('returning ');
@@ -558,6 +566,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
558
566
  if (isSubQuery && !merge_query_node_js_1.MergeQueryNode.is(rootQueryNode)) {
559
567
  this.append(')');
560
568
  }
569
+ if (node.endModifiers?.length) {
570
+ this.append(' ');
571
+ this.compileList(node.endModifiers, ' ');
572
+ }
561
573
  }
562
574
  visitColumnUpdate(node) {
563
575
  this.visitNode(node.column);
@@ -973,6 +985,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
973
985
  this.append('distinct ');
974
986
  }
975
987
  this.compileList(node.aggregated);
988
+ if (node.orderBy) {
989
+ this.append(' ');
990
+ this.visitNode(node.orderBy);
991
+ }
976
992
  this.append(')');
977
993
  if (node.filter) {
978
994
  this.append(' filter(');
@@ -1115,6 +1131,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
1115
1131
  this.append(' ');
1116
1132
  this.visitNode(node.output);
1117
1133
  }
1134
+ if (node.endModifiers?.length) {
1135
+ this.append(' ');
1136
+ this.compileList(node.endModifiers, ' ');
1137
+ }
1118
1138
  }
1119
1139
  visitMatched(node) {
1120
1140
  if (node.not) {
@@ -141,20 +141,19 @@ export declare class QueryCreator<DB> {
141
141
  * ### Examples
142
142
  *
143
143
  * ```ts
144
- * const result = db.selectNoFrom((eb) => [
144
+ * const result = await db.selectNoFrom((eb) => [
145
145
  * eb.selectFrom('person')
146
146
  * .select('id')
147
147
  * .where('first_name', '=', 'Jennifer')
148
148
  * .limit(1)
149
149
  * .as('jennifer_id'),
150
- *
151
150
  * eb.selectFrom('pet')
152
151
  * .select('id')
153
152
  * .where('name', '=', 'Doggo')
154
153
  * .limit(1)
155
154
  * .as('doggo_id')
156
- * ])
157
- * .executeTakeFirstOrThrow()
155
+ * ])
156
+ * .executeTakeFirstOrThrow()
158
157
  *
159
158
  * console.log(result.jennifer_id)
160
159
  * console.log(result.doggo_id)
@@ -214,7 +213,7 @@ export declare class QueryCreator<DB> {
214
213
  * last_name: 'Aniston'
215
214
  * })
216
215
  * .returning('id')
217
- * .executeTakeFirst()
216
+ * .executeTakeFirstOrThrow()
218
217
  * ```
219
218
  */
220
219
  insertInto<T extends keyof DB & string>(table: T): InsertQueryBuilder<DB, T, InsertResult>;
@@ -262,7 +261,7 @@ export declare class QueryCreator<DB> {
262
261
  * ```ts
263
262
  * const result = await db
264
263
  * .deleteFrom('person')
265
- * .where('person.id', '=', '1')
264
+ * .where('person.id', '=', 1)
266
265
  * .executeTakeFirst()
267
266
  *
268
267
  * console.log(result.numDeletedRows)
@@ -280,7 +279,7 @@ export declare class QueryCreator<DB> {
280
279
  * const result = await db
281
280
  * .deleteFrom(['person', 'pet'])
282
281
  * .using('person')
283
- * .innerJoin('pet', 'pet.owner_id', '=', 'person.id')
282
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
284
283
  * .where('person.id', '=', 1)
285
284
  * .executeTakeFirst()
286
285
  * ```
@@ -334,14 +333,18 @@ export declare class QueryCreator<DB> {
334
333
  *
335
334
  * ### Examples
336
335
  *
336
+ * <!-- siteExample("merge", "Source row existence", 10) -->
337
+ *
338
+ * Update a target column based on the existence of a source row:
339
+ *
337
340
  * ```ts
338
341
  * const result = await db
339
- * .mergeInto('person')
340
- * .using('pet', 'pet.owner_id', 'person.id')
341
- * .whenMatched((and) => and('has_pets', '!=', 'Y'))
342
+ * .mergeInto('person as target')
343
+ * .using('pet as source', 'source.owner_id', 'target.id')
344
+ * .whenMatchedAnd('target.has_pets', '!=', 'Y')
342
345
  * .thenUpdateSet({ has_pets: 'Y' })
343
- * .whenNotMatched()
344
- * .thenDoNothing()
346
+ * .whenNotMatchedBySourceAnd('target.has_pets', '=', 'Y')
347
+ * .thenUpdateSet({ has_pets: 'N' })
345
348
  * .executeTakeFirstOrThrow()
346
349
  *
347
350
  * console.log(result.numChangedRows)
@@ -351,11 +354,56 @@ export declare class QueryCreator<DB> {
351
354
  *
352
355
  * ```sql
353
356
  * merge into "person"
354
- * using "pet" on "pet"."owner_id" = "person"."id"
355
- * when matched and "has_pets" != $1 then
356
- * update set "has_pets" = $2
357
- * when not matched then
358
- * do nothing
357
+ * using "pet"
358
+ * on "pet"."owner_id" = "person"."id"
359
+ * when matched and "has_pets" != $1
360
+ * then update set "has_pets" = $2
361
+ * when not matched by source and "has_pets" = $3
362
+ * then update set "has_pets" = $4
363
+ * ```
364
+ *
365
+ * <!-- siteExample("merge", "Temporary changes table", 20) -->
366
+ *
367
+ * Merge new entries from a temporary changes table:
368
+ *
369
+ * ```ts
370
+ * const result = await db
371
+ * .mergeInto('wine as target')
372
+ * .using(
373
+ * 'wine_stock_change as source',
374
+ * 'source.wine_name',
375
+ * 'target.name',
376
+ * )
377
+ * .whenNotMatchedAnd('source.stock_delta', '>', 0)
378
+ * .thenInsertValues(({ ref }) => ({
379
+ * name: ref('source.wine_name'),
380
+ * stock: ref('source.stock_delta'),
381
+ * }))
382
+ * .whenMatchedAnd(
383
+ * (eb) => eb('target.stock', '+', eb.ref('source.stock_delta')),
384
+ * '>',
385
+ * 0,
386
+ * )
387
+ * .thenUpdateSet('stock', (eb) =>
388
+ * eb('target.stock', '+', eb.ref('source.stock_delta')),
389
+ * )
390
+ * .whenMatched()
391
+ * .thenDelete()
392
+ * .executeTakeFirstOrThrow()
393
+ * ```
394
+ *
395
+ * The generated SQL (PostgreSQL):
396
+ *
397
+ * ```sql
398
+ * merge into "wine" as "target"
399
+ * using "wine_stock_change" as "source"
400
+ * on "source"."wine_name" = "target"."name"
401
+ * when not matched and "source"."stock_delta" > $1
402
+ * then insert ("name", "stock") values ("source"."wine_name", "source"."stock_delta")
403
+ * when matched and "target"."stock" + "source"."stock_delta" > $2
404
+ * then update set "stock" = "target"."stock" + "source"."stock_delta"
405
+ * when matched
406
+ * then delete
359
407
  * ```
360
408
  */
361
409
  mergeInto<TR extends keyof DB & string>(targetTable: TR): MergeQueryBuilder<DB, TR, MergeResult>;
@@ -498,7 +546,7 @@ export declare class QueryCreator<DB> {
498
546
  * This only affects the query created through the builder returned from
499
547
  * this method and doesn't modify the `db` instance.
500
548
  *
501
- * See [this recipe](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/schemas.md)
549
+ * See [this recipe](https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0007-schemas.md)
502
550
  * for a more detailed explanation.
503
551
  *
504
552
  * ### Examples
@@ -72,7 +72,7 @@ class QueryCreator {
72
72
  * last_name: 'Aniston'
73
73
  * })
74
74
  * .returning('id')
75
- * .executeTakeFirst()
75
+ * .executeTakeFirstOrThrow()
76
76
  * ```
77
77
  */
78
78
  insertInto(table) {
@@ -300,7 +300,7 @@ class QueryCreator {
300
300
  * This only affects the query created through the builder returned from
301
301
  * this method and doesn't modify the `db` instance.
302
302
  *
303
- * See [this recipe](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/schemas.md)
303
+ * See [this recipe](https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0007-schemas.md)
304
304
  * for a more detailed explanation.
305
305
  *
306
306
  * ### Examples
@@ -20,6 +20,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
20
20
  * this method also provides strict typing:
21
21
  *
22
22
  * ```ts
23
+ * import { sql } from 'kysely'
24
+ *
23
25
  * const result = await db
24
26
  * .selectFrom('person')
25
27
  * .select(
@@ -33,7 +35,7 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
33
35
  *
34
36
  * The generated SQL (PostgreSQL):
35
37
  *
36
- * ```ts
38
+ * ```sql
37
39
  * select concat(first_name, ' ', last_name) as "full_name"
38
40
  * from "person"
39
41
  * ```
@@ -42,6 +44,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
42
44
  * provide the alias as the only type argument:
43
45
  *
44
46
  * ```ts
47
+ * import { sql } from 'kysely'
48
+ *
45
49
  * const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
46
50
  *
47
51
  * // The alias is `t(a, b)` which specifies the column names
@@ -56,11 +60,12 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
56
60
  * .expression(
57
61
  * db.selectFrom(aliasedValues).select(['t.a', 't.b'])
58
62
  * )
63
+ * .execute()
59
64
  * ```
60
65
  *
61
66
  * The generated SQL (PostgreSQL):
62
67
  *
63
- * ```ts
68
+ * ```sql
64
69
  * insert into "person" ("first_name", "last_name")
65
70
  * from (values (1, 'foo')) as t(a, b)
66
71
  * select "t"."a", "t"."b"
@@ -70,6 +75,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
70
75
  /**
71
76
  * Returns an aliased version of the expression.
72
77
  *
78
+ * ### Examples
79
+ *
73
80
  * In addition to slapping `as "the_alias"` at the end of the expression,
74
81
  * this method also provides strict typing:
75
82
  *
@@ -78,7 +85,7 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
78
85
  * .selectFrom('person')
79
86
  * .select((eb) =>
80
87
  * // `eb.fn<string>` returns an AliasableExpression<string>
81
- * eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
88
+ * eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
82
89
  * )
83
90
  * .executeTakeFirstOrThrow()
84
91
  *
@@ -88,7 +95,7 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
88
95
  *
89
96
  * The generated SQL (PostgreSQL):
90
97
  *
91
- * ```ts
98
+ * ```sql
92
99
  * select
93
100
  * concat("first_name", $1, "last_name") as "full_name"
94
101
  * from
@@ -99,6 +106,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
99
106
  * provide the alias as the only type argument:
100
107
  *
101
108
  * ```ts
109
+ * import { sql } from 'kysely'
110
+ *
102
111
  * const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
103
112
  *
104
113
  * // The alias is `t(a, b)` which specifies the column names
@@ -113,11 +122,12 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
113
122
  * .expression(
114
123
  * db.selectFrom(aliasedValues).select(['t.a', 't.b'])
115
124
  * )
125
+ * .execute()
116
126
  * ```
117
127
  *
118
128
  * The generated SQL (PostgreSQL):
119
129
  *
120
- * ```ts
130
+ * ```sql
121
131
  * insert into "person" ("first_name", "last_name")
122
132
  * from (values (1, 'foo')) as t(a, b)
123
133
  * select "t"."a", "t"."b"
@@ -151,8 +161,10 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
151
161
  * ### Examples
152
162
  *
153
163
  * ```ts
154
- * const { sql } = sql`select * from ${sql.table('person')}`.compile(db)
155
- * console.log(sql)
164
+ * import { sql } from 'kysely'
165
+ *
166
+ * const compiledQuery = sql`select * from ${sql.table('person')}`.compile(db)
167
+ * console.log(compiledQuery.sql)
156
168
  * ```
157
169
  */
158
170
  compile(executorProvider: QueryExecutorProvider): CompiledQuery<O>;
@@ -162,6 +174,8 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
162
174
  * ### Examples
163
175
  *
164
176
  * ```ts
177
+ * import { sql } from 'kysely'
178
+ *
165
179
  * const result = await sql`select * from ${sql.table('person')}`.execute(db)
166
180
  * ```
167
181
  */
@@ -169,11 +183,19 @@ export interface RawBuilder<O> extends AliasableExpression<O> {
169
183
  /**
170
184
  * Creates the OperationNode that describes how to compile this expression into SQL.
171
185
  *
186
+ * ### Examples
187
+ *
172
188
  * If you are creating a custom expression, it's often easiest to use the {@link sql}
173
189
  * template tag to build the node:
174
190
  *
175
191
  * ```ts
192
+ * import { type Expression, type OperationNode, sql } from 'kysely'
193
+ *
176
194
  * class SomeExpression<T> implements Expression<T> {
195
+ * get expressionType(): T | undefined {
196
+ * return undefined
197
+ * }
198
+ *
177
199
  * toOperationNode(): OperationNode {
178
200
  * return sql`some sql here`.toOperationNode()
179
201
  * }
@@ -5,6 +5,7 @@ export interface Sql {
5
5
  *
6
6
  * ```ts
7
7
  * import { sql } from 'kysely'
8
+ * import type { Person } from 'type-editor' // imaginary module
8
9
  *
9
10
  * const id = 123
10
11
  * const snippet = sql<Person[]>`select * from person where id = ${id}`
@@ -26,6 +27,12 @@ export interface Sql {
26
27
  * of methods:
27
28
  *
28
29
  * ```ts
30
+ * import { sql } from 'kysely'
31
+ *
32
+ * const nicknames = ['johnny', 'john', 'jon']
33
+ * const date1 = new Date('2000-01-01')
34
+ * const date2 = new Date('2001-01-01')
35
+ *
29
36
  * const persons = await db
30
37
  * .selectFrom('person')
31
38
  * .select(
@@ -56,19 +63,24 @@ export interface Sql {
56
63
  * instance as the only argument:
57
64
  *
58
65
  * ```ts
59
- * const result = await sql<Person[]>`select * from person`.execute(db)
66
+ * import { sql } from 'kysely'
67
+ * import type { Person } from 'type-editor'
68
+ *
69
+ * const { rows: results } = await sql<Person[]>`select * from person`.execute(db)
60
70
  * ```
61
71
  *
62
72
  * You can merge other `sql` expressions and queries using substitutions:
63
73
  *
64
74
  * ```ts
75
+ * import { sql } from 'kysely'
76
+ *
65
77
  * const petName = db.selectFrom('pet').select('name').limit(1)
66
78
  * const fullName = sql<string>`concat(first_name, ' ', last_name)`
67
79
  *
68
- * sql`
80
+ * sql<{ full_name: string; pet_name: string }[]>`
69
81
  * select ${fullName} as full_name, ${petName} as pet_name
70
82
  * from person
71
- * `
83
+ * `.execute(db)
72
84
  * ```
73
85
  *
74
86
  * Substitutions also handle {@link ExpressionBuilder.ref},
@@ -101,6 +113,11 @@ export interface Sql {
101
113
  * `sql.val(value)` is a shortcut for:
102
114
  *
103
115
  * ```ts
116
+ * import { sql } from 'kysely'
117
+ *
118
+ * const value = 123
119
+ * type ValueType = typeof value
120
+ *
104
121
  * sql<ValueType>`${value}`
105
122
  * ```
106
123
  */
@@ -131,7 +148,7 @@ export interface Sql {
131
148
  * select "first_name" from person
132
149
  * ```
133
150
  *
134
- * The refefences can also include a table name:
151
+ * The references can also include a table name:
135
152
  *
136
153
  * ```ts
137
154
  * const columnRef = 'person.first_name'
@@ -145,7 +162,7 @@ export interface Sql {
145
162
  * select "person"."first_name" from person
146
163
  * ```
147
164
  *
148
- * The refefences can also include a schema on supported databases:
165
+ * The references can also include a schema on supported databases:
149
166
  *
150
167
  * ```ts
151
168
  * const columnRef = 'public.person.first_name'
@@ -204,7 +221,7 @@ export interface Sql {
204
221
  * but can also be used for any other identifiers like index names.
205
222
  *
206
223
  * You should use {@link Sql.ref | ref} and {@link Sql.table | table}
207
- * instead of this whenever possible as they produce a more sematic
224
+ * instead of this whenever possible as they produce a more semantic
208
225
  * operation node tree.
209
226
  *
210
227
  * WARNING! Using this with unchecked inputs WILL lead to SQL injection
@@ -229,7 +246,7 @@ export interface Sql {
229
246
  * const columnName = 'first_name'
230
247
  * const table = 'person'
231
248
  *
232
- * sql`select ${sql.id(schema, table, columnName)}} from ${sql.id(schema, table)}`
249
+ * sql`select ${sql.id(schema, table, columnName)} from ${sql.id(schema, table)}`
233
250
  * ```
234
251
  *
235
252
  * The generated SQL (PostgreSQL):
@@ -297,6 +314,8 @@ export interface Sql {
297
314
  * ### Examples
298
315
  *
299
316
  * ```ts
317
+ * import type { Person } from 'type-editor' // imaginary module
318
+ *
300
319
  * function findByNicknames(nicknames: string[]): Promise<Person[]> {
301
320
  * return db
302
321
  * .selectFrom('person')
@@ -19,14 +19,28 @@ export declare class AlterColumnBuilder {
19
19
  /**
20
20
  * Allows us to force consumers to do exactly one alteration to a column.
21
21
  *
22
- * Basically, deny the following:
22
+ * One cannot do no alterations:
23
23
  *
24
24
  * ```ts
25
- * db.schema.alterTable('person').alterColumn('age', (ac) => ac)
25
+ * await db.schema
26
+ * .alterTable('person')
27
+ * // .execute() // Property 'execute' does not exist on type 'AlteredColumnBuilder'.
26
28
  * ```
27
29
  *
28
30
  * ```ts
29
- * db.schema.alterTable('person').alterColumn('age', (ac) => ac.dropNotNull().setNotNull())
31
+ * await db.schema
32
+ * .alterTable('person')
33
+ * // .alterColumn('age', (ac) => ac) // Type 'AlterColumnBuilder' is not assignable to type 'AlteredColumnBuilder'.
34
+ * // .execute()
35
+ * ```
36
+ *
37
+ * One cannot do multiple alterations:
38
+ *
39
+ * ```ts
40
+ * await db.schema
41
+ * .alterTable('person')
42
+ * // .alterColumn('age', (ac) => ac.dropNotNull().setNotNull()) // Property 'setNotNull' does not exist on type 'AlteredColumnBuilder'.
43
+ * // .execute()
30
44
  * ```
31
45
  *
32
46
  * Which would now throw a compilation error, instead of a runtime error.
@@ -38,14 +38,28 @@ exports.AlterColumnBuilder = AlterColumnBuilder;
38
38
  /**
39
39
  * Allows us to force consumers to do exactly one alteration to a column.
40
40
  *
41
- * Basically, deny the following:
41
+ * One cannot do no alterations:
42
42
  *
43
43
  * ```ts
44
- * db.schema.alterTable('person').alterColumn('age', (ac) => ac)
44
+ * await db.schema
45
+ * .alterTable('person')
46
+ * // .execute() // Property 'execute' does not exist on type 'AlteredColumnBuilder'.
45
47
  * ```
46
48
  *
47
49
  * ```ts
48
- * db.schema.alterTable('person').alterColumn('age', (ac) => ac.dropNotNull().setNotNull())
50
+ * await db.schema
51
+ * .alterTable('person')
52
+ * // .alterColumn('age', (ac) => ac) // Type 'AlterColumnBuilder' is not assignable to type 'AlteredColumnBuilder'.
53
+ * // .execute()
54
+ * ```
55
+ *
56
+ * One cannot do multiple alterations:
57
+ *
58
+ * ```ts
59
+ * await db.schema
60
+ * .alterTable('person')
61
+ * // .alterColumn('age', (ac) => ac.dropNotNull().setNotNull()) // Property 'setNotNull' does not exist on type 'AlteredColumnBuilder'.
62
+ * // .execute()
49
63
  * ```
50
64
  *
51
65
  * Which would now throw a compilation error, instead of a runtime error.
@@ -12,6 +12,23 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
12
12
  constructor(props: AlterTableAddIndexBuilderProps);
13
13
  /**
14
14
  * Makes the index unique.
15
+ *
16
+ * ### Examples
17
+ *
18
+ * ```ts
19
+ * await db.schema
20
+ * .alterTable('person')
21
+ * .addIndex('person_first_name_index')
22
+ * .unique()
23
+ * .column('email')
24
+ * .execute()
25
+ * ```
26
+ *
27
+ * The generated SQL (MySQL):
28
+ *
29
+ * ```sql
30
+ * alter table `person` add unique index `person_first_name_index` (`email`)
31
+ * ```
15
32
  */
16
33
  unique(): AlterTableAddIndexBuilder;
17
34
  /**
@@ -24,11 +41,11 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
24
41
  *
25
42
  * ```ts
26
43
  * await db.schema
27
- * .alterTable('person')
28
- * .createIndex('person_first_name_and_age_index')
29
- * .column('first_name')
30
- * .column('age desc')
31
- * .execute()
44
+ * .alterTable('person')
45
+ * .addIndex('person_first_name_and_age_index')
46
+ * .column('first_name')
47
+ * .column('age desc')
48
+ * .execute()
32
49
  * ```
33
50
  *
34
51
  * The generated SQL (MySQL):
@@ -48,10 +65,10 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
48
65
  *
49
66
  * ```ts
50
67
  * await db.schema
51
- * .alterTable('person')
52
- * .addIndex('person_first_name_and_age_index')
53
- * .columns(['first_name', 'age desc'])
54
- * .execute()
68
+ * .alterTable('person')
69
+ * .addIndex('person_first_name_and_age_index')
70
+ * .columns(['first_name', 'age desc'])
71
+ * .execute()
55
72
  * ```
56
73
  *
57
74
  * The generated SQL (MySQL):
@@ -85,6 +102,23 @@ export declare class AlterTableAddIndexBuilder implements OperationNodeSource, C
85
102
  expression(expression: Expression<any>): AlterTableAddIndexBuilder;
86
103
  /**
87
104
  * Specifies the index type.
105
+ *
106
+ * ### Examples
107
+ *
108
+ * ```ts
109
+ * await db.schema
110
+ * .alterTable('person')
111
+ * .addIndex('person_first_name_index')
112
+ * .column('first_name')
113
+ * .using('hash')
114
+ * .execute()
115
+ * ```
116
+ *
117
+ * The generated SQL (MySQL):
118
+ *
119
+ * ```sql
120
+ * alter table `person` add index `person_first_name_index` (`first_name`) using hash
121
+ * ```
88
122
  */
89
123
  using(indexType: IndexType): AlterTableAddIndexBuilder;
90
124
  using(indexType: string): AlterTableAddIndexBuilder;
@@ -14,6 +14,23 @@ class AlterTableAddIndexBuilder {
14
14
  }
15
15
  /**
16
16
  * Makes the index unique.
17
+ *
18
+ * ### Examples
19
+ *
20
+ * ```ts
21
+ * await db.schema
22
+ * .alterTable('person')
23
+ * .addIndex('person_first_name_index')
24
+ * .unique()
25
+ * .column('email')
26
+ * .execute()
27
+ * ```
28
+ *
29
+ * The generated SQL (MySQL):
30
+ *
31
+ * ```sql
32
+ * alter table `person` add unique index `person_first_name_index` (`email`)
33
+ * ```
17
34
  */
18
35
  unique() {
19
36
  return new AlterTableAddIndexBuilder({
@@ -35,11 +52,11 @@ class AlterTableAddIndexBuilder {
35
52
  *
36
53
  * ```ts
37
54
  * await db.schema
38
- * .alterTable('person')
39
- * .createIndex('person_first_name_and_age_index')
40
- * .column('first_name')
41
- * .column('age desc')
42
- * .execute()
55
+ * .alterTable('person')
56
+ * .addIndex('person_first_name_and_age_index')
57
+ * .column('first_name')
58
+ * .column('age desc')
59
+ * .execute()
43
60
  * ```
44
61
  *
45
62
  * The generated SQL (MySQL):
@@ -68,10 +85,10 @@ class AlterTableAddIndexBuilder {
68
85
  *
69
86
  * ```ts
70
87
  * await db.schema
71
- * .alterTable('person')
72
- * .addIndex('person_first_name_and_age_index')
73
- * .columns(['first_name', 'age desc'])
74
- * .execute()
88
+ * .alterTable('person')
89
+ * .addIndex('person_first_name_and_age_index')
90
+ * .columns(['first_name', 'age desc'])
91
+ * .execute()
75
92
  * ```
76
93
  *
77
94
  * The generated SQL (MySQL):