kysely 0.27.4 → 0.27.6

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 (222) hide show
  1. package/.renovaterc.json +3 -0
  2. package/CODE_OF_CONDUCT.md +183 -0
  3. package/CONTRIBUTING.md +121 -23
  4. package/FUNDING.md +25 -0
  5. package/README.md +13 -2
  6. package/deno.check.d.ts +86 -0
  7. package/deno.check.json +21 -0
  8. package/dist/cjs/dialect/dialect-adapter-base.d.ts +11 -2
  9. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -2
  10. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +11 -2
  11. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  12. package/dist/cjs/dialect/mssql/mssql-driver.js +20 -13
  13. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
  14. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  15. package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
  16. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
  17. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  18. package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
  19. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
  20. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  21. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +66 -44
  22. package/dist/cjs/driver/dummy-driver.d.ts +13 -12
  23. package/dist/cjs/driver/dummy-driver.js +13 -12
  24. package/dist/cjs/dynamic/dynamic.d.ts +6 -6
  25. package/dist/cjs/dynamic/dynamic.js +6 -6
  26. package/dist/cjs/expression/expression-builder.d.ts +154 -61
  27. package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
  28. package/dist/cjs/expression/expression.d.ts +40 -5
  29. package/dist/cjs/helpers/mssql.d.ts +74 -14
  30. package/dist/cjs/helpers/mssql.js +74 -14
  31. package/dist/cjs/helpers/mysql.d.ts +14 -10
  32. package/dist/cjs/helpers/mysql.js +14 -10
  33. package/dist/cjs/helpers/postgres.d.ts +7 -4
  34. package/dist/cjs/helpers/postgres.js +7 -4
  35. package/dist/cjs/helpers/sqlite.d.ts +41 -16
  36. package/dist/cjs/helpers/sqlite.js +41 -16
  37. package/dist/cjs/kysely.d.ts +99 -41
  38. package/dist/cjs/kysely.js +60 -36
  39. package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
  40. package/dist/cjs/migration/file-migration-provider.js +2 -2
  41. package/dist/cjs/migration/migrator.d.ts +90 -15
  42. package/dist/cjs/migration/migrator.js +95 -17
  43. package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
  44. package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
  45. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/data-type-node.js +12 -0
  47. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -0
  48. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
  49. package/dist/cjs/operation-node/merge-query-node.d.ts +1 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.d.ts +9 -3
  51. package/dist/cjs/operation-node/operation-node-transformer.js +14 -3
  52. package/dist/cjs/operation-node/query-node.d.ts +4 -0
  53. package/dist/cjs/operation-node/query-node.js +8 -0
  54. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  55. package/dist/cjs/operation-node/select-query-node.js +0 -8
  56. package/dist/cjs/operation-node/update-query-node.d.ts +1 -0
  57. package/dist/cjs/parser/insert-values-parser.js +3 -1
  58. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  59. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +24 -19
  60. package/dist/cjs/plugin/camel-case/camel-case.js +4 -1
  61. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  62. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  63. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  64. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  65. package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
  66. package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
  67. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  68. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  69. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  70. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  71. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +26 -0
  72. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
  73. package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
  74. package/dist/cjs/query-builder/delete-query-builder.d.ts +137 -45
  75. package/dist/cjs/query-builder/delete-query-builder.js +76 -26
  76. package/dist/cjs/query-builder/function-module.d.ts +35 -88
  77. package/dist/cjs/query-builder/insert-query-builder.d.ts +239 -65
  78. package/dist/cjs/query-builder/insert-query-builder.js +188 -52
  79. package/dist/cjs/query-builder/insert-result.d.ts +10 -5
  80. package/dist/cjs/query-builder/insert-result.js +10 -5
  81. package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
  82. package/dist/cjs/query-builder/json-path-builder.js +8 -5
  83. package/dist/cjs/query-builder/merge-query-builder.d.ts +159 -21
  84. package/dist/cjs/query-builder/merge-query-builder.js +68 -6
  85. package/dist/cjs/query-builder/on-conflict-builder.d.ts +51 -18
  86. package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
  87. package/dist/cjs/query-builder/output-interface.d.ts +50 -7
  88. package/dist/cjs/query-builder/returning-interface.d.ts +5 -5
  89. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
  90. package/dist/cjs/query-builder/select-query-builder.d.ts +295 -63
  91. package/dist/cjs/query-builder/select-query-builder.js +7 -7
  92. package/dist/cjs/query-builder/update-query-builder.d.ts +138 -29
  93. package/dist/cjs/query-builder/update-query-builder.js +75 -10
  94. package/dist/cjs/query-builder/update-result.d.ts +2 -2
  95. package/dist/cjs/query-builder/update-result.js +2 -2
  96. package/dist/cjs/query-builder/where-interface.d.ts +5 -1
  97. package/dist/cjs/query-compiler/default-query-compiler.js +20 -0
  98. package/dist/cjs/query-creator.d.ts +66 -18
  99. package/dist/cjs/query-creator.js +2 -2
  100. package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
  101. package/dist/cjs/raw-builder/sql.d.ts +27 -8
  102. package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
  103. package/dist/cjs/schema/alter-column-builder.js +17 -3
  104. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +43 -9
  105. package/dist/cjs/schema/alter-table-add-index-builder.js +26 -9
  106. package/dist/cjs/schema/column-definition-builder.d.ts +283 -26
  107. package/dist/cjs/schema/column-definition-builder.js +283 -26
  108. package/dist/cjs/schema/create-table-builder.d.ts +86 -33
  109. package/dist/cjs/schema/create-table-builder.js +86 -33
  110. package/dist/cjs/util/column-type.d.ts +5 -9
  111. package/dist/cjs/util/require-all-props.d.ts +4 -2
  112. package/dist/cjs/util/require-all-props.js +4 -2
  113. package/dist/cjs/util/streamable.d.ts +1 -1
  114. package/dist/cjs/util/type-utils.d.ts +4 -2
  115. package/dist/esm/dialect/dialect-adapter-base.d.ts +11 -2
  116. package/dist/esm/dialect/dialect-adapter.d.ts +11 -2
  117. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +11 -2
  118. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  119. package/dist/esm/dialect/mssql/mssql-driver.js +20 -13
  120. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
  121. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  122. package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
  123. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
  124. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  125. package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
  126. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
  127. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  128. package/dist/esm/dialect/sqlite/sqlite-introspector.js +66 -44
  129. package/dist/esm/driver/dummy-driver.d.ts +13 -12
  130. package/dist/esm/driver/dummy-driver.js +13 -12
  131. package/dist/esm/dynamic/dynamic.d.ts +6 -6
  132. package/dist/esm/dynamic/dynamic.js +6 -6
  133. package/dist/esm/expression/expression-builder.d.ts +154 -61
  134. package/dist/esm/expression/expression-wrapper.d.ts +92 -23
  135. package/dist/esm/expression/expression.d.ts +40 -5
  136. package/dist/esm/helpers/mssql.d.ts +74 -14
  137. package/dist/esm/helpers/mssql.js +74 -14
  138. package/dist/esm/helpers/mysql.d.ts +14 -10
  139. package/dist/esm/helpers/mysql.js +14 -10
  140. package/dist/esm/helpers/postgres.d.ts +7 -4
  141. package/dist/esm/helpers/postgres.js +7 -4
  142. package/dist/esm/helpers/sqlite.d.ts +41 -16
  143. package/dist/esm/helpers/sqlite.js +41 -16
  144. package/dist/esm/kysely.d.ts +99 -41
  145. package/dist/esm/kysely.js +60 -36
  146. package/dist/esm/migration/file-migration-provider.d.ts +2 -2
  147. package/dist/esm/migration/file-migration-provider.js +2 -2
  148. package/dist/esm/migration/migrator.d.ts +90 -15
  149. package/dist/esm/migration/migrator.js +95 -17
  150. package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
  151. package/dist/esm/operation-node/aggregate-function-node.js +9 -0
  152. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  153. package/dist/esm/operation-node/data-type-node.js +12 -0
  154. package/dist/esm/operation-node/delete-query-node.d.ts +1 -0
  155. package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
  156. package/dist/esm/operation-node/merge-query-node.d.ts +1 -0
  157. package/dist/esm/operation-node/operation-node-transformer.d.ts +9 -3
  158. package/dist/esm/operation-node/operation-node-transformer.js +14 -3
  159. package/dist/esm/operation-node/query-node.d.ts +4 -0
  160. package/dist/esm/operation-node/query-node.js +8 -0
  161. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  162. package/dist/esm/operation-node/select-query-node.js +0 -8
  163. package/dist/esm/operation-node/update-query-node.d.ts +1 -0
  164. package/dist/esm/parser/insert-values-parser.js +3 -1
  165. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  166. package/dist/esm/plugin/camel-case/camel-case-plugin.js +24 -19
  167. package/dist/esm/plugin/camel-case/camel-case.js +4 -1
  168. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  169. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  170. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  171. package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  172. package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
  173. package/dist/esm/plugin/noop-plugin.d.ts +28 -6
  174. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  175. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  176. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  177. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  178. package/dist/esm/plugin/with-schema/with-schema-transformer.js +26 -0
  179. package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
  180. package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
  181. package/dist/esm/query-builder/delete-query-builder.d.ts +137 -45
  182. package/dist/esm/query-builder/delete-query-builder.js +76 -26
  183. package/dist/esm/query-builder/function-module.d.ts +35 -88
  184. package/dist/esm/query-builder/insert-query-builder.d.ts +239 -65
  185. package/dist/esm/query-builder/insert-query-builder.js +188 -52
  186. package/dist/esm/query-builder/insert-result.d.ts +10 -5
  187. package/dist/esm/query-builder/insert-result.js +10 -5
  188. package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
  189. package/dist/esm/query-builder/json-path-builder.js +8 -5
  190. package/dist/esm/query-builder/merge-query-builder.d.ts +159 -21
  191. package/dist/esm/query-builder/merge-query-builder.js +68 -6
  192. package/dist/esm/query-builder/on-conflict-builder.d.ts +51 -18
  193. package/dist/esm/query-builder/on-conflict-builder.js +41 -16
  194. package/dist/esm/query-builder/output-interface.d.ts +50 -7
  195. package/dist/esm/query-builder/returning-interface.d.ts +5 -5
  196. package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
  197. package/dist/esm/query-builder/select-query-builder.d.ts +295 -63
  198. package/dist/esm/query-builder/select-query-builder.js +7 -7
  199. package/dist/esm/query-builder/update-query-builder.d.ts +138 -29
  200. package/dist/esm/query-builder/update-query-builder.js +75 -10
  201. package/dist/esm/query-builder/update-result.d.ts +2 -2
  202. package/dist/esm/query-builder/update-result.js +2 -2
  203. package/dist/esm/query-builder/where-interface.d.ts +5 -1
  204. package/dist/esm/query-compiler/default-query-compiler.js +20 -0
  205. package/dist/esm/query-creator.d.ts +66 -18
  206. package/dist/esm/query-creator.js +2 -2
  207. package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
  208. package/dist/esm/raw-builder/sql.d.ts +27 -8
  209. package/dist/esm/schema/alter-column-builder.d.ts +17 -3
  210. package/dist/esm/schema/alter-column-builder.js +17 -3
  211. package/dist/esm/schema/alter-table-add-index-builder.d.ts +43 -9
  212. package/dist/esm/schema/alter-table-add-index-builder.js +26 -9
  213. package/dist/esm/schema/column-definition-builder.d.ts +283 -26
  214. package/dist/esm/schema/column-definition-builder.js +283 -26
  215. package/dist/esm/schema/create-table-builder.d.ts +86 -33
  216. package/dist/esm/schema/create-table-builder.js +86 -33
  217. package/dist/esm/util/column-type.d.ts +5 -9
  218. package/dist/esm/util/require-all-props.d.ts +4 -2
  219. package/dist/esm/util/require-all-props.js +4 -2
  220. package/dist/esm/util/streamable.d.ts +1 -1
  221. package/dist/esm/util/type-utils.d.ts +4 -2
  222. package/package.json +28 -23
@@ -79,7 +79,7 @@ class SelectQueryBuilderImpl {
79
79
  modifyEnd(modifier) {
80
80
  return new SelectQueryBuilderImpl({
81
81
  ...this.#props,
82
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.createWithExpression(modifier.toOperationNode())),
82
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.createWithExpression(modifier.toOperationNode())),
83
83
  });
84
84
  }
85
85
  distinct() {
@@ -91,37 +91,37 @@ class SelectQueryBuilderImpl {
91
91
  forUpdate(of) {
92
92
  return new SelectQueryBuilderImpl({
93
93
  ...this.#props,
94
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForUpdate', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
94
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForUpdate', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
95
95
  });
96
96
  }
97
97
  forShare(of) {
98
98
  return new SelectQueryBuilderImpl({
99
99
  ...this.#props,
100
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForShare', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
100
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForShare', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
101
101
  });
102
102
  }
103
103
  forKeyShare(of) {
104
104
  return new SelectQueryBuilderImpl({
105
105
  ...this.#props,
106
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForKeyShare', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
106
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForKeyShare', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
107
107
  });
108
108
  }
109
109
  forNoKeyUpdate(of) {
110
110
  return new SelectQueryBuilderImpl({
111
111
  ...this.#props,
112
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForNoKeyUpdate', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
112
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('ForNoKeyUpdate', of ? (0, object_utils_js_1.asArray)(of).map(table_parser_js_1.parseTable) : undefined)),
113
113
  });
114
114
  }
115
115
  skipLocked() {
116
116
  return new SelectQueryBuilderImpl({
117
117
  ...this.#props,
118
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('SkipLocked')),
118
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('SkipLocked')),
119
119
  });
120
120
  }
121
121
  noWait() {
122
122
  return new SelectQueryBuilderImpl({
123
123
  ...this.#props,
124
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('NoWait')),
124
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.create('NoWait')),
125
125
  });
126
126
  }
127
127
  selectAll(table) {
@@ -60,6 +60,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
60
60
  * you can always use:
61
61
  *
62
62
  * ```ts
63
+ * import { sql } from 'kysely'
64
+ *
63
65
  * sql`your operator`
64
66
  * ```
65
67
  *
@@ -71,7 +73,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
71
73
  * const persons = await db
72
74
  * .selectFrom('person')
73
75
  * .selectAll()
74
- * .where('id', 'in', ['1', '2', '3'])
76
+ * .where('id', 'in', [1, 2, 3])
75
77
  * .execute()
76
78
  * ```
77
79
  *
@@ -319,6 +321,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
319
321
  * import { sql } from 'kysely'
320
322
  * const { ref } = db.dynamic
321
323
  *
324
+ * const columnFromUserInput: string = 'id'
325
+ *
322
326
  * const persons = await db
323
327
  * .selectFrom('person')
324
328
  * .selectAll()
@@ -554,7 +558,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
554
558
  * ```ts
555
559
  * await db.selectFrom('person')
556
560
  * .innerJoin(
557
- * qb.selectFrom('pet')
561
+ * db.selectFrom('pet')
558
562
  * .select(['owner_id', 'name'])
559
563
  * .where('name', '=', 'Doggo')
560
564
  * .as('doggos'),
@@ -603,15 +607,17 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
603
607
  * Update the first 2 rows in the 'person' table:
604
608
  *
605
609
  * ```ts
606
- * return await db
610
+ * await db
607
611
  * .updateTable('person')
608
612
  * .set({ first_name: 'Foo' })
609
- * .limit(2);
613
+ * .limit(2)
614
+ * .execute()
610
615
  * ```
611
616
  *
612
617
  * The generated SQL (MySQL):
618
+ *
613
619
  * ```sql
614
- * update `person` set `first_name` = 'Foo' limit 2
620
+ * update `person` set `first_name` = ? limit ?
615
621
  * ```
616
622
  */
617
623
  limit(limit: ValueExpression<DB, TB, number>): UpdateQueryBuilder<DB, UT, TB, O>;
@@ -643,7 +649,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
643
649
  * first_name: 'Jennifer',
644
650
  * last_name: 'Aniston'
645
651
  * })
646
- * .where('id', '=', '1')
652
+ * .where('id', '=', 1)
647
653
  * .executeTakeFirst()
648
654
  *
649
655
  * console.log(result.numUpdatedRows)
@@ -668,7 +674,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
668
674
  * first_name: eb.selectFrom('pet').select('name').limit(1),
669
675
  * last_name: 'updated',
670
676
  * }))
671
- * .where('id', '=', '1')
677
+ * .where('id', '=', 1)
672
678
  * .executeTakeFirst()
673
679
  *
674
680
  * console.log(result.numUpdatedRows)
@@ -690,13 +696,15 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
690
696
  * (or other target) and the second as the value:
691
697
  *
692
698
  * ```ts
699
+ * import { sql } from 'kysely'
700
+ *
693
701
  * const result = await db
694
702
  * .updateTable('person')
695
703
  * .set('first_name', 'Foo')
696
704
  * // As always, both arguments can be arbitrary expressions or
697
705
  * // callbacks that give you access to an expression builder:
698
- * .set(sql<string>`address['postalCode']`, (eb) => eb.val('61710))
699
- * .where('id', '=', '1')
706
+ * .set(sql<string>`address['postalCode']`, (eb) => eb.val('61710'))
707
+ * .where('id', '=', 1)
700
708
  * .executeTakeFirst()
701
709
  * ```
702
710
  *
@@ -781,20 +789,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
781
789
  * last_name: 'Aniston'
782
790
  * })
783
791
  * .returning('id')
784
- * .executeTakeFirst()
792
+ * .executeTakeFirstOrThrow()
785
793
  * ```
786
794
  *
787
795
  * Return multiple columns:
788
796
  *
789
797
  * ```ts
790
- * const { id, first_name } = await db
798
+ * const { id, last_name } = await db
791
799
  * .insertInto('person')
792
800
  * .values({
793
801
  * first_name: 'Jennifer',
794
802
  * last_name: 'Aniston'
795
803
  * })
796
804
  * .returning(['id', 'last_name'])
797
- * .executeTakeFirst()
805
+ * .executeTakeFirstOrThrow()
798
806
  * ```
799
807
  *
800
808
  * Return arbitrary expressions:
@@ -811,9 +819,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
811
819
  * .returning((eb) => [
812
820
  * 'id as id',
813
821
  * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
814
- * eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
822
+ * eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
815
823
  * ])
816
- * .executeTakeFirst()
824
+ * .executeTakeFirstOrThrow()
817
825
  * ```
818
826
  */
819
827
  returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
@@ -846,15 +854,24 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
846
854
  * .output('inserted.id')
847
855
  * .values({
848
856
  * first_name: 'Jennifer',
849
- * last_name: 'Aniston'
857
+ * last_name: 'Aniston',
858
+ * gender: 'female',
850
859
  * })
851
- * .executeTakeFirst()
860
+ * .executeTakeFirstOrThrow()
861
+ * ```
862
+ *
863
+ * The generated SQL (MSSQL):
864
+ *
865
+ * ```sql
866
+ * insert into "person" ("first_name", "last_name", "gender")
867
+ * output "inserted"."id"
868
+ * values (@1, @2, @3)
852
869
  * ```
853
870
  *
854
871
  * Return multiple columns:
855
872
  *
856
873
  * ```ts
857
- * const { id, first_name } = await db
874
+ * const { old_first_name, old_last_name, new_first_name, new_last_name } = await db
858
875
  * .updateTable('person')
859
876
  * .set({ first_name: 'John', last_name: 'Doe' })
860
877
  * .output([
@@ -864,7 +881,19 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
864
881
  * 'inserted.last_name as new_last_name',
865
882
  * ])
866
883
  * .where('created_at', '<', new Date())
867
- * .executeTakeFirst()
884
+ * .executeTakeFirstOrThrow()
885
+ * ```
886
+ *
887
+ * The generated SQL (MSSQL):
888
+ *
889
+ * ```sql
890
+ * update "person"
891
+ * set "first_name" = @1, "last_name" = @2
892
+ * output "deleted"."first_name" as "old_first_name",
893
+ * "deleted"."last_name" as "old_last_name",
894
+ * "inserted"."first_name" as "new_first_name",
895
+ * "inserted"."last_name" as "new_last_name"
896
+ * where "created_at" < @3
868
897
  * ```
869
898
  *
870
899
  * Return arbitrary expressions:
@@ -872,11 +901,19 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
872
901
  * ```ts
873
902
  * import { sql } from 'kysely'
874
903
  *
875
- * const { id, full_name } = await db
904
+ * const { full_name } = await db
876
905
  * .deleteFrom('person')
877
- * .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name')
906
+ * .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name'))
878
907
  * .where('created_at', '<', new Date())
879
- * .executeTakeFirst()
908
+ * .executeTakeFirstOrThrow()
909
+ * ```
910
+ *
911
+ * The generated SQL (MSSQL):
912
+ *
913
+ * ```sql
914
+ * delete from "person"
915
+ * output concat("deleted"."first_name", ' ', "deleted"."last_name") as "full_name"
916
+ * where "created_at" < @1
880
917
  * ```
881
918
  *
882
919
  * Return the action performed on the row:
@@ -897,7 +934,21 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
897
934
  * 'inserted.id as inserted_id',
898
935
  * 'deleted.id as deleted_id',
899
936
  * ])
937
+ * .execute()
938
+ * ```
939
+ *
940
+ * The generated SQL (MSSQL):
941
+ *
942
+ * ```sql
943
+ * merge into "person"
944
+ * using "pet" on "pet"."owner_id" = "person"."id"
945
+ * when matched then delete
946
+ * when not matched then
947
+ * insert ("first_name", "last_name", "gender")
948
+ * values (@1, @2, @3)
949
+ * output "inserted"."id" as "inserted_id", "deleted"."id" as "deleted_id"
900
950
  * ```
951
+ *
901
952
  */
902
953
  output<OE extends OutputExpression<DB, UT>>(selections: readonly OE[]): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
903
954
  output<CB extends OutputCallback<DB, TB>>(callback: CB): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputCallback<CB>>>;
@@ -909,6 +960,30 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
909
960
  * Also see the {@link output} method.
910
961
  */
911
962
  outputAll(table: OutputPrefix): UpdateQueryBuilder<DB, UT, TB, ReturningAllRow<DB, TB, O>>;
963
+ /**
964
+ * This can be used to add any additional SQL to the end of the query.
965
+ *
966
+ * ### Examples
967
+ *
968
+ * ```ts
969
+ * import { sql } from 'kysely'
970
+ *
971
+ * await db.updateTable('person')
972
+ * .set({ age: 39 })
973
+ * .where('first_name', '=', 'John')
974
+ * .modifyEnd(sql.raw('-- This is a comment'))
975
+ * .execute()
976
+ * ```
977
+ *
978
+ * The generated SQL (MySQL):
979
+ *
980
+ * ```sql
981
+ * update `person`
982
+ * set `age` = 39
983
+ * where `first_name` = "John" -- This is a comment
984
+ * ```
985
+ */
986
+ modifyEnd(modifier: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
912
987
  /**
913
988
  * Clears all `returning` clauses from the query.
914
989
  *
@@ -941,11 +1016,18 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
941
1016
  * The next example uses a helper function `log` to log a query:
942
1017
  *
943
1018
  * ```ts
1019
+ * import type { Compilable } from 'kysely'
1020
+ * import type { PersonUpdate } from 'type-editor' // imaginary module
1021
+ *
944
1022
  * function log<T extends Compilable>(qb: T): T {
945
1023
  * console.log(qb.compile())
946
1024
  * return qb
947
1025
  * }
948
1026
  *
1027
+ * const values = {
1028
+ * first_name: 'John',
1029
+ * } satisfies PersonUpdate
1030
+ *
949
1031
  * db.updateTable('person')
950
1032
  * .set(values)
951
1033
  * .$call(log)
@@ -966,7 +1048,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
966
1048
  * ### Examples
967
1049
  *
968
1050
  * ```ts
969
- * async function updatePerson(id: number, updates: UpdateablePerson, returnLastName: boolean) {
1051
+ * import type { PersonUpdate } from 'type-editor' // imaginary module
1052
+ *
1053
+ * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {
970
1054
  * return await db
971
1055
  * .updateTable('person')
972
1056
  * .set(updates)
@@ -982,11 +1066,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
982
1066
  * the code. In the example above the return type of the `updatePerson` function is:
983
1067
  *
984
1068
  * ```ts
985
- * {
1069
+ * Promise<{
986
1070
  * id: number
987
1071
  * first_name: string
988
1072
  * last_name?: string
989
- * }
1073
+ * }>
990
1074
  * ```
991
1075
  */
992
1076
  $if<O2>(condition: boolean, func: (qb: this) => UpdateQueryBuilder<any, any, any, O2>): O2 extends UpdateResult ? UpdateQueryBuilder<DB, UT, TB, UpdateResult> : O2 extends O & infer E ? UpdateQueryBuilder<DB, UT, TB, O & Partial<E>> : UpdateQueryBuilder<DB, UT, TB, Partial<O2>>;
@@ -1015,27 +1099,41 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
1015
1099
  * Turn this code:
1016
1100
  *
1017
1101
  * ```ts
1102
+ * import type { Person } from 'type-editor' // imaginary module
1103
+ *
1104
+ * const id = 1
1105
+ * const now = new Date().toISOString()
1106
+ *
1018
1107
  * const person = await db.updateTable('person')
1019
- * .set({ deletedAt: now })
1108
+ * .set({ deleted_at: now })
1020
1109
  * .where('id', '=', id)
1021
1110
  * .where('nullable_column', 'is not', null)
1022
1111
  * .returningAll()
1023
1112
  * .executeTakeFirstOrThrow()
1024
1113
  *
1025
- * if (person.nullable_column) {
1114
+ * if (isWithNoNullValue(person)) {
1026
1115
  * functionThatExpectsPersonWithNonNullValue(person)
1027
1116
  * }
1117
+ *
1118
+ * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
1119
+ * return person.nullable_column != null
1120
+ * }
1028
1121
  * ```
1029
1122
  *
1030
1123
  * Into this:
1031
1124
  *
1032
1125
  * ```ts
1126
+ * import type { NotNull } from 'kysely'
1127
+ *
1128
+ * const id = 1
1129
+ * const now = new Date().toISOString()
1130
+ *
1033
1131
  * const person = await db.updateTable('person')
1034
- * .set({ deletedAt: now })
1132
+ * .set({ deleted_at: now })
1035
1133
  * .where('id', '=', id)
1036
1134
  * .where('nullable_column', 'is not', null)
1037
1135
  * .returningAll()
1038
- * .$narrowType<{ deletedAt: Date; nullable_column: string }>()
1136
+ * .$narrowType<{ deleted_at: Date; nullable_column: NotNull }>()
1039
1137
  * .executeTakeFirstOrThrow()
1040
1138
  *
1041
1139
  * functionThatExpectsPersonWithNonNullValue(person)
@@ -1065,6 +1163,17 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
1065
1163
  * ### Examples
1066
1164
  *
1067
1165
  * ```ts
1166
+ * import type { PersonUpdate, PetUpdate, Species } from 'type-editor' // imaginary module
1167
+ *
1168
+ * const person = {
1169
+ * id: 1,
1170
+ * gender: 'other',
1171
+ * } satisfies PersonUpdate
1172
+ *
1173
+ * const pet = {
1174
+ * name: 'Fluffy',
1175
+ * } satisfies PetUpdate
1176
+ *
1068
1177
  * const result = await db
1069
1178
  * .with('updated_person', (qb) => qb
1070
1179
  * .updateTable('person')
@@ -1121,7 +1230,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
1121
1230
  * ### Examples
1122
1231
  *
1123
1232
  * ```ts
1124
- * const stream = db.
1233
+ * const stream = db
1125
1234
  * .selectFrom('person')
1126
1235
  * .select(['first_name', 'last_name'])
1127
1236
  * .where('gender', '=', 'other')
@@ -121,15 +121,17 @@ class UpdateQueryBuilder {
121
121
  * Update the first 2 rows in the 'person' table:
122
122
  *
123
123
  * ```ts
124
- * return await db
124
+ * await db
125
125
  * .updateTable('person')
126
126
  * .set({ first_name: 'Foo' })
127
- * .limit(2);
127
+ * .limit(2)
128
+ * .execute()
128
129
  * ```
129
130
  *
130
131
  * The generated SQL (MySQL):
132
+ *
131
133
  * ```sql
132
- * update `person` set `first_name` = 'Foo' limit 2
134
+ * update `person` set `first_name` = ? limit ?
133
135
  * ```
134
136
  */
135
137
  limit(limit) {
@@ -168,6 +170,35 @@ class UpdateQueryBuilder {
168
170
  queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
169
171
  });
170
172
  }
173
+ /**
174
+ * This can be used to add any additional SQL to the end of the query.
175
+ *
176
+ * ### Examples
177
+ *
178
+ * ```ts
179
+ * import { sql } from 'kysely'
180
+ *
181
+ * await db.updateTable('person')
182
+ * .set({ age: 39 })
183
+ * .where('first_name', '=', 'John')
184
+ * .modifyEnd(sql.raw('-- This is a comment'))
185
+ * .execute()
186
+ * ```
187
+ *
188
+ * The generated SQL (MySQL):
189
+ *
190
+ * ```sql
191
+ * update `person`
192
+ * set `age` = 39
193
+ * where `first_name` = "John" -- This is a comment
194
+ * ```
195
+ */
196
+ modifyEnd(modifier) {
197
+ return new UpdateQueryBuilder({
198
+ ...this.#props,
199
+ queryNode: query_node_js_1.QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),
200
+ });
201
+ }
171
202
  /**
172
203
  * Clears all `returning` clauses from the query.
173
204
  *
@@ -205,11 +236,18 @@ class UpdateQueryBuilder {
205
236
  * The next example uses a helper function `log` to log a query:
206
237
  *
207
238
  * ```ts
239
+ * import type { Compilable } from 'kysely'
240
+ * import type { PersonUpdate } from 'type-editor' // imaginary module
241
+ *
208
242
  * function log<T extends Compilable>(qb: T): T {
209
243
  * console.log(qb.compile())
210
244
  * return qb
211
245
  * }
212
246
  *
247
+ * const values = {
248
+ * first_name: 'John',
249
+ * } satisfies PersonUpdate
250
+ *
213
251
  * db.updateTable('person')
214
252
  * .set(values)
215
253
  * .$call(log)
@@ -232,7 +270,9 @@ class UpdateQueryBuilder {
232
270
  * ### Examples
233
271
  *
234
272
  * ```ts
235
- * async function updatePerson(id: number, updates: UpdateablePerson, returnLastName: boolean) {
273
+ * import type { PersonUpdate } from 'type-editor' // imaginary module
274
+ *
275
+ * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {
236
276
  * return await db
237
277
  * .updateTable('person')
238
278
  * .set(updates)
@@ -248,11 +288,11 @@ class UpdateQueryBuilder {
248
288
  * the code. In the example above the return type of the `updatePerson` function is:
249
289
  *
250
290
  * ```ts
251
- * {
291
+ * Promise<{
252
292
  * id: number
253
293
  * first_name: string
254
294
  * last_name?: string
255
- * }
295
+ * }>
256
296
  * ```
257
297
  */
258
298
  $if(condition, func) {
@@ -290,27 +330,41 @@ class UpdateQueryBuilder {
290
330
  * Turn this code:
291
331
  *
292
332
  * ```ts
333
+ * import type { Person } from 'type-editor' // imaginary module
334
+ *
335
+ * const id = 1
336
+ * const now = new Date().toISOString()
337
+ *
293
338
  * const person = await db.updateTable('person')
294
- * .set({ deletedAt: now })
339
+ * .set({ deleted_at: now })
295
340
  * .where('id', '=', id)
296
341
  * .where('nullable_column', 'is not', null)
297
342
  * .returningAll()
298
343
  * .executeTakeFirstOrThrow()
299
344
  *
300
- * if (person.nullable_column) {
345
+ * if (isWithNoNullValue(person)) {
301
346
  * functionThatExpectsPersonWithNonNullValue(person)
302
347
  * }
348
+ *
349
+ * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
350
+ * return person.nullable_column != null
351
+ * }
303
352
  * ```
304
353
  *
305
354
  * Into this:
306
355
  *
307
356
  * ```ts
357
+ * import type { NotNull } from 'kysely'
358
+ *
359
+ * const id = 1
360
+ * const now = new Date().toISOString()
361
+ *
308
362
  * const person = await db.updateTable('person')
309
- * .set({ deletedAt: now })
363
+ * .set({ deleted_at: now })
310
364
  * .where('id', '=', id)
311
365
  * .where('nullable_column', 'is not', null)
312
366
  * .returningAll()
313
- * .$narrowType<{ deletedAt: Date; nullable_column: string }>()
367
+ * .$narrowType<{ deleted_at: Date; nullable_column: NotNull }>()
314
368
  * .executeTakeFirstOrThrow()
315
369
  *
316
370
  * functionThatExpectsPersonWithNonNullValue(person)
@@ -342,6 +396,17 @@ class UpdateQueryBuilder {
342
396
  * ### Examples
343
397
  *
344
398
  * ```ts
399
+ * import type { PersonUpdate, PetUpdate, Species } from 'type-editor' // imaginary module
400
+ *
401
+ * const person = {
402
+ * id: 1,
403
+ * gender: 'other',
404
+ * } satisfies PersonUpdate
405
+ *
406
+ * const pet = {
407
+ * name: 'Fluffy',
408
+ * } satisfies PetUpdate
409
+ *
345
410
  * const result = await db
346
411
  * .with('updated_person', (qb) => qb
347
412
  * .updateTable('person')
@@ -1,14 +1,14 @@
1
1
  export declare class UpdateResult {
2
2
  /**
3
3
  * The number of rows the update query updated (even if not changed).
4
- */
4
+ */
5
5
  readonly numUpdatedRows: bigint;
6
6
  /**
7
7
  * The number of rows the update query changed.
8
8
  *
9
9
  * This is **optional** and only supported in dialects such as MySQL.
10
10
  * You would probably use {@link numUpdatedRows} in most cases.
11
- */
11
+ */
12
12
  readonly numChangedRows?: bigint;
13
13
  constructor(numUpdatedRows: bigint, numChangedRows: bigint | undefined);
14
14
  }
@@ -4,14 +4,14 @@ exports.UpdateResult = void 0;
4
4
  class UpdateResult {
5
5
  /**
6
6
  * The number of rows the update query updated (even if not changed).
7
- */
7
+ */
8
8
  numUpdatedRows;
9
9
  /**
10
10
  * The number of rows the update query changed.
11
11
  *
12
12
  * This is **optional** and only supported in dialects such as MySQL.
13
13
  * You would probably use {@link numUpdatedRows} in most cases.
14
- */
14
+ */
15
15
  numChangedRows;
16
16
  constructor(numUpdatedRows, numChangedRows) {
17
17
  this.numUpdatedRows = numUpdatedRows;
@@ -35,6 +35,8 @@ export interface WhereInterface<DB, TB extends keyof DB> {
35
35
  * you can always use:
36
36
  *
37
37
  * ```ts
38
+ * import { sql } from 'kysely'
39
+ *
38
40
  * sql`your operator`
39
41
  * ```
40
42
  *
@@ -46,7 +48,7 @@ export interface WhereInterface<DB, TB extends keyof DB> {
46
48
  * const persons = await db
47
49
  * .selectFrom('person')
48
50
  * .selectAll()
49
- * .where('id', 'in', ['1', '2', '3'])
51
+ * .where('id', 'in', [1, 2, 3])
50
52
  * .execute()
51
53
  * ```
52
54
  *
@@ -294,6 +296,8 @@ export interface WhereInterface<DB, TB extends keyof DB> {
294
296
  * import { sql } from 'kysely'
295
297
  * const { ref } = db.dynamic
296
298
  *
299
+ * const columnFromUserInput: string = 'id'
300
+ *
297
301
  * const persons = await db
298
302
  * .selectFrom('person')
299
303
  * .selectAll()