kysely 0.11.2 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dialect/dialect-adapter-base.d.ts +36 -0
  3. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +36 -0
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +16 -0
  5. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +3 -0
  7. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  8. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -6
  9. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +36 -0
  10. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +16 -0
  11. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +29 -0
  12. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +3 -0
  13. package/dist/cjs/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  14. package/dist/cjs/dialect/postgres/postgres-query-compiler.js +9 -1
  15. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +36 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +6 -2
  17. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  18. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
  19. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  20. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  21. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +6 -6
  22. package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
  23. package/dist/cjs/driver/runtime-driver.d.ts +29 -0
  24. package/dist/cjs/driver/runtime-driver.js +1 -1
  25. package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
  26. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
  27. package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
  28. package/dist/cjs/dynamic/dynamic.d.ts +6 -7
  29. package/dist/cjs/dynamic/dynamic.js +6 -7
  30. package/dist/cjs/index.d.ts +14 -3
  31. package/dist/cjs/index.js +12 -1
  32. package/dist/cjs/kysely.d.ts +39 -15
  33. package/dist/cjs/kysely.js +32 -9
  34. package/dist/cjs/migration/migration.d.ts +2 -2
  35. package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
  36. package/dist/cjs/operation-node/create-table-node.js +6 -6
  37. package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
  38. package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
  39. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  40. package/dist/cjs/operation-node/operation-node-transformer.js +11 -1
  41. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  42. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  43. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  44. package/dist/cjs/operation-node/query-node.d.ts +0 -2
  45. package/dist/cjs/operation-node/query-node.js +0 -10
  46. package/dist/cjs/operation-node/values-node.d.ts +15 -0
  47. package/dist/cjs/operation-node/values-node.js +18 -0
  48. package/dist/cjs/package.json +1 -3
  49. package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
  50. package/dist/cjs/parser/complex-expression-parser.js +25 -0
  51. package/dist/cjs/parser/filter-parser.d.ts +13 -4
  52. package/dist/cjs/parser/filter-parser.js +21 -24
  53. package/dist/cjs/parser/insert-values-parser.d.ts +7 -10
  54. package/dist/cjs/parser/insert-values-parser.js +31 -39
  55. package/dist/cjs/parser/order-by-parser.d.ts +1 -1
  56. package/dist/cjs/parser/parse-context.d.ts +22 -8
  57. package/dist/cjs/parser/parse-context.js +10 -10
  58. package/dist/cjs/parser/reference-parser.d.ts +8 -7
  59. package/dist/cjs/parser/reference-parser.js +8 -17
  60. package/dist/cjs/parser/returning-parser.d.ts +1 -5
  61. package/dist/cjs/parser/select-parser.d.ts +12 -14
  62. package/dist/cjs/parser/select-parser.js +5 -9
  63. package/dist/cjs/parser/table-parser.d.ts +9 -11
  64. package/dist/cjs/parser/table-parser.js +2 -8
  65. package/dist/cjs/parser/union-parser.d.ts +2 -2
  66. package/dist/cjs/parser/union-parser.js +1 -6
  67. package/dist/cjs/parser/update-set-parser.d.ts +2 -8
  68. package/dist/cjs/parser/update-set-parser.js +6 -26
  69. package/dist/cjs/parser/value-parser.d.ts +9 -6
  70. package/dist/cjs/parser/value-parser.js +7 -30
  71. package/dist/cjs/parser/with-parser.d.ts +6 -3
  72. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +34 -0
  73. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  74. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  75. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  76. package/dist/cjs/query-builder/delete-query-builder.d.ts +647 -0
  77. package/dist/cjs/query-builder/delete-query-builder.js +185 -0
  78. package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
  79. package/dist/cjs/query-builder/expression-builder.js +3 -3
  80. package/dist/cjs/query-builder/function-builder.d.ts +2 -1
  81. package/dist/cjs/query-builder/function-builder.js +2 -1
  82. package/dist/cjs/query-builder/having-interface.d.ts +49 -0
  83. package/dist/cjs/query-builder/having-interface.js +2 -0
  84. package/dist/cjs/query-builder/insert-query-builder.d.ts +504 -0
  85. package/dist/cjs/query-builder/insert-query-builder.js +256 -0
  86. package/dist/cjs/query-builder/insert-result.d.ts +3 -2
  87. package/dist/cjs/query-builder/insert-result.js +3 -2
  88. package/dist/cjs/query-builder/join-builder.d.ts +19 -20
  89. package/dist/cjs/query-builder/join-builder.js +12 -12
  90. package/dist/cjs/query-builder/join-interface.d.ts +130 -0
  91. package/dist/cjs/query-builder/join-interface.js +2 -0
  92. package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
  93. package/dist/cjs/query-builder/no-result-error.js +14 -0
  94. package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
  95. package/dist/cjs/query-builder/returning-interface.js +2 -0
  96. package/dist/cjs/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
  97. package/dist/cjs/query-builder/select-query-builder.js +571 -0
  98. package/dist/cjs/query-builder/update-query-builder.d.ts +735 -0
  99. package/dist/cjs/query-builder/update-query-builder.js +279 -0
  100. package/dist/cjs/query-builder/where-interface.d.ts +378 -0
  101. package/dist/cjs/query-builder/where-interface.js +2 -0
  102. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  103. package/dist/cjs/query-compiler/default-query-compiler.js +22 -5
  104. package/dist/cjs/query-creator.d.ts +42 -40
  105. package/dist/cjs/query-creator.js +33 -28
  106. package/dist/cjs/query-executor/query-executor.d.ts +1 -1
  107. package/dist/cjs/query-executor/query-executor.js +1 -1
  108. package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
  109. package/dist/cjs/raw-builder/raw-builder.js +6 -0
  110. package/dist/cjs/schema/alter-table-builder.d.ts +218 -2
  111. package/dist/cjs/schema/column-definition-builder.d.ts +135 -20
  112. package/dist/cjs/schema/create-index-builder.d.ts +2 -1
  113. package/dist/cjs/schema/create-index-builder.js +2 -1
  114. package/dist/cjs/schema/create-table-builder.d.ts +26 -9
  115. package/dist/cjs/schema/create-table-builder.js +42 -9
  116. package/dist/cjs/schema/create-view-builder.d.ts +17 -3
  117. package/dist/cjs/schema/create-view-builder.js +25 -16
  118. package/dist/cjs/schema/schema.d.ts +18 -11
  119. package/dist/cjs/schema/schema.js +18 -11
  120. package/dist/cjs/util/log.d.ts +11 -8
  121. package/dist/cjs/util/log.js +25 -12
  122. package/dist/cjs/util/type-utils.d.ts +7 -7
  123. package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
  124. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +36 -0
  125. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +16 -0
  126. package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
  127. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +3 -0
  128. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  129. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -6
  130. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +36 -0
  131. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +16 -0
  132. package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
  133. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +3 -0
  134. package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  135. package/dist/esm/dialect/postgres/postgres-query-compiler.js +9 -1
  136. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +36 -0
  137. package/dist/esm/dialect/sqlite/sqlite-adapter.js +6 -2
  138. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  139. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
  140. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  141. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  142. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +6 -6
  143. package/dist/esm/driver/default-connection-provider.d.ts +4 -0
  144. package/dist/esm/driver/runtime-driver.d.ts +29 -0
  145. package/dist/esm/driver/runtime-driver.js +1 -1
  146. package/dist/esm/driver/single-connection-provider.d.ts +4 -0
  147. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
  148. package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
  149. package/dist/esm/dynamic/dynamic.d.ts +6 -7
  150. package/dist/esm/dynamic/dynamic.js +6 -7
  151. package/dist/esm/index.d.ts +14 -3
  152. package/dist/esm/index.js +12 -1
  153. package/dist/esm/kysely.d.ts +39 -15
  154. package/dist/esm/kysely.js +32 -9
  155. package/dist/esm/migration/migration.d.ts +2 -2
  156. package/dist/esm/operation-node/create-table-node.d.ts +6 -2
  157. package/dist/esm/operation-node/create-table-node.js +6 -6
  158. package/dist/esm/operation-node/create-view-node.d.ts +1 -0
  159. package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
  160. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  161. package/dist/esm/operation-node/operation-node-transformer.js +11 -1
  162. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  163. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  164. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  165. package/dist/esm/operation-node/query-node.d.ts +0 -2
  166. package/dist/esm/operation-node/query-node.js +0 -10
  167. package/dist/esm/operation-node/values-node.d.ts +15 -0
  168. package/dist/esm/operation-node/values-node.js +15 -0
  169. package/dist/esm/package.json +1 -3
  170. package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
  171. package/dist/esm/parser/complex-expression-parser.js +20 -0
  172. package/dist/esm/parser/filter-parser.d.ts +13 -4
  173. package/dist/esm/parser/filter-parser.js +21 -24
  174. package/dist/esm/parser/insert-values-parser.d.ts +7 -10
  175. package/dist/esm/parser/insert-values-parser.js +31 -38
  176. package/dist/esm/parser/order-by-parser.d.ts +1 -1
  177. package/dist/esm/parser/parse-context.d.ts +22 -8
  178. package/dist/esm/parser/parse-context.js +10 -10
  179. package/dist/esm/parser/reference-parser.d.ts +8 -7
  180. package/dist/esm/parser/reference-parser.js +9 -18
  181. package/dist/esm/parser/returning-parser.d.ts +1 -5
  182. package/dist/esm/parser/select-parser.d.ts +12 -14
  183. package/dist/esm/parser/select-parser.js +6 -10
  184. package/dist/esm/parser/table-parser.d.ts +9 -11
  185. package/dist/esm/parser/table-parser.js +3 -9
  186. package/dist/esm/parser/union-parser.d.ts +2 -2
  187. package/dist/esm/parser/union-parser.js +1 -6
  188. package/dist/esm/parser/update-set-parser.d.ts +2 -8
  189. package/dist/esm/parser/update-set-parser.js +5 -24
  190. package/dist/esm/parser/value-parser.d.ts +9 -6
  191. package/dist/esm/parser/value-parser.js +8 -31
  192. package/dist/esm/parser/with-parser.d.ts +6 -3
  193. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +34 -0
  194. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  195. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  196. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  197. package/dist/esm/query-builder/delete-query-builder.d.ts +647 -0
  198. package/dist/esm/query-builder/delete-query-builder.js +181 -0
  199. package/dist/esm/query-builder/expression-builder.d.ts +8 -6
  200. package/dist/esm/query-builder/expression-builder.js +3 -3
  201. package/dist/esm/query-builder/function-builder.d.ts +2 -1
  202. package/dist/esm/query-builder/function-builder.js +2 -1
  203. package/dist/esm/query-builder/having-interface.d.ts +49 -0
  204. package/dist/esm/query-builder/having-interface.js +1 -0
  205. package/dist/esm/query-builder/insert-query-builder.d.ts +504 -0
  206. package/dist/esm/query-builder/insert-query-builder.js +252 -0
  207. package/dist/esm/query-builder/insert-result.d.ts +3 -2
  208. package/dist/esm/query-builder/insert-result.js +3 -2
  209. package/dist/esm/query-builder/join-builder.d.ts +19 -20
  210. package/dist/esm/query-builder/join-builder.js +12 -12
  211. package/dist/esm/query-builder/join-interface.d.ts +130 -0
  212. package/dist/esm/query-builder/join-interface.js +1 -0
  213. package/dist/esm/query-builder/no-result-error.d.ts +9 -0
  214. package/dist/esm/query-builder/no-result-error.js +10 -0
  215. package/dist/esm/query-builder/returning-interface.d.ts +73 -0
  216. package/dist/esm/query-builder/returning-interface.js +1 -0
  217. package/dist/esm/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
  218. package/dist/esm/query-builder/select-query-builder.js +566 -0
  219. package/dist/esm/query-builder/update-query-builder.d.ts +735 -0
  220. package/dist/esm/query-builder/update-query-builder.js +275 -0
  221. package/dist/esm/query-builder/where-interface.d.ts +378 -0
  222. package/dist/esm/query-builder/where-interface.js +1 -0
  223. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  224. package/dist/esm/query-compiler/default-query-compiler.js +22 -5
  225. package/dist/esm/query-creator.d.ts +42 -40
  226. package/dist/esm/query-creator.js +33 -28
  227. package/dist/esm/query-executor/query-executor.d.ts +1 -1
  228. package/dist/esm/query-executor/query-executor.js +1 -1
  229. package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
  230. package/dist/esm/raw-builder/raw-builder.js +6 -0
  231. package/dist/esm/schema/alter-table-builder.d.ts +218 -2
  232. package/dist/esm/schema/column-definition-builder.d.ts +135 -20
  233. package/dist/esm/schema/create-index-builder.d.ts +2 -1
  234. package/dist/esm/schema/create-index-builder.js +2 -1
  235. package/dist/esm/schema/create-table-builder.d.ts +26 -9
  236. package/dist/esm/schema/create-table-builder.js +43 -10
  237. package/dist/esm/schema/create-view-builder.d.ts +17 -3
  238. package/dist/esm/schema/create-view-builder.js +25 -16
  239. package/dist/esm/schema/schema.d.ts +18 -11
  240. package/dist/esm/schema/schema.js +18 -11
  241. package/dist/esm/util/log.d.ts +11 -8
  242. package/dist/esm/util/log.js +25 -12
  243. package/dist/esm/util/type-utils.d.ts +7 -7
  244. package/package.json +9 -7
  245. package/dist/cjs/query-builder/query-builder.js +0 -1067
  246. package/dist/esm/query-builder/query-builder.js +0 -1061
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateQueryBuilder = void 0;
4
+ const join_parser_js_1 = require("../parser/join-parser.js");
5
+ const select_parser_js_1 = require("../parser/select-parser.js");
6
+ const filter_parser_js_1 = require("../parser/filter-parser.js");
7
+ const query_node_js_1 = require("../operation-node/query-node.js");
8
+ const update_query_node_js_1 = require("../operation-node/update-query-node.js");
9
+ const update_set_parser_js_1 = require("../parser/update-set-parser.js");
10
+ const prevent_await_js_1 = require("../util/prevent-await.js");
11
+ const object_utils_js_1 = require("../util/object-utils.js");
12
+ const update_result_js_1 = require("./update-result.js");
13
+ const no_result_error_js_1 = require("./no-result-error.js");
14
+ class UpdateQueryBuilder {
15
+ #props;
16
+ constructor(props) {
17
+ this.#props = (0, object_utils_js_1.freeze)(props);
18
+ }
19
+ where(...args) {
20
+ return new UpdateQueryBuilder({
21
+ ...this.#props,
22
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
23
+ });
24
+ }
25
+ whereRef(lhs, op, rhs) {
26
+ return new UpdateQueryBuilder({
27
+ ...this.#props,
28
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
29
+ });
30
+ }
31
+ orWhere(...args) {
32
+ return new UpdateQueryBuilder({
33
+ ...this.#props,
34
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
35
+ });
36
+ }
37
+ orWhereRef(lhs, op, rhs) {
38
+ return new UpdateQueryBuilder({
39
+ ...this.#props,
40
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
41
+ });
42
+ }
43
+ whereExists(arg) {
44
+ return new UpdateQueryBuilder({
45
+ ...this.#props,
46
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
47
+ });
48
+ }
49
+ whereNotExists(arg) {
50
+ return new UpdateQueryBuilder({
51
+ ...this.#props,
52
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
53
+ });
54
+ }
55
+ orWhereExists(arg) {
56
+ return new UpdateQueryBuilder({
57
+ ...this.#props,
58
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
59
+ });
60
+ }
61
+ orWhereNotExists(arg) {
62
+ return new UpdateQueryBuilder({
63
+ ...this.#props,
64
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
65
+ });
66
+ }
67
+ innerJoin(...args) {
68
+ return new UpdateQueryBuilder({
69
+ ...this.#props,
70
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'InnerJoin', args)),
71
+ });
72
+ }
73
+ leftJoin(...args) {
74
+ return new UpdateQueryBuilder({
75
+ ...this.#props,
76
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'LeftJoin', args)),
77
+ });
78
+ }
79
+ rightJoin(...args) {
80
+ return new UpdateQueryBuilder({
81
+ ...this.#props,
82
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'RightJoin', args)),
83
+ });
84
+ }
85
+ fullJoin(...args) {
86
+ return new UpdateQueryBuilder({
87
+ ...this.#props,
88
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'FullJoin', args)),
89
+ });
90
+ }
91
+ /**
92
+ * Sets the values to update for an {@link Kysely.updateTable | update} query.
93
+ *
94
+ * This method takes an object whose keys are column names and values are
95
+ * values to update. In addition to the column's type, the values can be `raw`
96
+ * instances or select queries.
97
+ *
98
+ * The return value of an update query is an instance of {@link UpdateResult}.
99
+ * You can use the {@link returning} method on supported databases to get out
100
+ * the updated rows.
101
+ *
102
+ * ### Examples
103
+ *
104
+ * Update a row in `person` table:
105
+ *
106
+ * ```ts
107
+ * const result = await db
108
+ * .updateTable('person')
109
+ * .set({
110
+ * first_name: 'Jennifer',
111
+ * last_name: 'Aniston'
112
+ * })
113
+ * .where('id', '=', 1)
114
+ * .executeTakeFirst()
115
+ *
116
+ * console.log(result.numUpdatedRows)
117
+ * ```
118
+ *
119
+ * The generated SQL (PostgreSQL):
120
+ *
121
+ * ```sql
122
+ * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3
123
+ * ```
124
+ *
125
+ * On PostgreSQL you ca chain `returning` to the query to get
126
+ * the updated rows' columns (or any other expression) as the
127
+ * return value:
128
+ *
129
+ * ```ts
130
+ * const row = await db
131
+ * .updateTable('person')
132
+ * .set({
133
+ * first_name: 'Jennifer',
134
+ * last_name: 'Aniston'
135
+ * })
136
+ * .where('id', '=', 1)
137
+ * .returning('id')
138
+ * .executeTakeFirstOrThrow()
139
+ *
140
+ * row.id
141
+ * ```
142
+ *
143
+ * The generated SQL (PostgreSQL):
144
+ *
145
+ * ```sql
146
+ * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
147
+ * ```
148
+ *
149
+ * In addition to primitives, the values can also be `raw` expressions or
150
+ * select queries:
151
+ *
152
+ * ```ts
153
+ * const result = await db
154
+ * .updateTable('person')
155
+ * .set({
156
+ * first_name: 'Jennifer',
157
+ * last_name: db.raw('? || ?', ['Ani', 'ston']),
158
+ * age: db.selectFrom('person').select(raw('avg(age)')),
159
+ * })
160
+ * .where('id', '=', 1)
161
+ * .executeTakeFirst()
162
+ *
163
+ * console.log(result.numUpdatedRows)
164
+ * ```
165
+ *
166
+ * The generated SQL (PostgreSQL):
167
+ *
168
+ * ```sql
169
+ * update "person" set
170
+ * "first_name" = $1,
171
+ * "last_name" = $2 || $3,
172
+ * "age" = (select avg(age) from "person")
173
+ * where "id" = $4
174
+ * ```
175
+ */
176
+ set(row) {
177
+ return new UpdateQueryBuilder({
178
+ ...this.#props,
179
+ queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdateObject)(this.#props.parseContext, row)),
180
+ });
181
+ }
182
+ returning(selection) {
183
+ return new UpdateQueryBuilder({
184
+ ...this.#props,
185
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#props.parseContext, selection)),
186
+ });
187
+ }
188
+ returningAll() {
189
+ return new UpdateQueryBuilder({
190
+ ...this.#props,
191
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)()),
192
+ });
193
+ }
194
+ /**
195
+ * Simply calls the given function passing `this` as the only argument.
196
+ *
197
+ * This method can be useful when adding optional method calls:
198
+ *
199
+ * ### Examples
200
+ *
201
+ * ```ts
202
+ * db.updateTable('person')
203
+ * .set(values)
204
+ * .call((qb) => {
205
+ * if (something) {
206
+ * return qb.where('something', '=', something)
207
+ * } else {
208
+ * return qb.where('somethingElse', '=', somethingElse)
209
+ * }
210
+ * })
211
+ * .execute()
212
+ * ```
213
+ */
214
+ call(func) {
215
+ return func(this);
216
+ }
217
+ /**
218
+ * Change the output type of the query.
219
+ *
220
+ * You should only use this method as the last resort if the types
221
+ * don't support your use case.
222
+ */
223
+ castTo() {
224
+ return new UpdateQueryBuilder(this.#props);
225
+ }
226
+ withPlugin(plugin) {
227
+ return new UpdateQueryBuilder({
228
+ ...this.#props,
229
+ executor: this.#props.executor.withPlugin(plugin),
230
+ });
231
+ }
232
+ toOperationNode() {
233
+ return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);
234
+ }
235
+ compile() {
236
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
237
+ }
238
+ /**
239
+ * Executes the query and returns an array of rows.
240
+ *
241
+ * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
242
+ */
243
+ async execute() {
244
+ const compildQuery = this.compile();
245
+ const query = compildQuery.query;
246
+ const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
247
+ if (this.#props.parseContext.adapter.supportsReturning && query.returning) {
248
+ return result.rows;
249
+ }
250
+ else {
251
+ return [new update_result_js_1.UpdateResult(result.numUpdatedOrDeletedRows)];
252
+ }
253
+ }
254
+ /**
255
+ * Executes the query and returns the first result or undefined if
256
+ * the query returned no result.
257
+ */
258
+ async executeTakeFirst() {
259
+ const [result] = await this.execute();
260
+ return result;
261
+ }
262
+ /**
263
+ * Executes the query and returns the first result or throws if
264
+ * the query returned no result.
265
+ *
266
+ * By default an instance of {@link NoResultError} is thrown, but you can
267
+ * provide a custom error class as the only argument to throw a different
268
+ * error.
269
+ */
270
+ async executeTakeFirstOrThrow(errorConstructor = no_result_error_js_1.NoResultError) {
271
+ const result = await this.executeTakeFirst();
272
+ if (result === undefined) {
273
+ throw new errorConstructor(this.toOperationNode());
274
+ }
275
+ return result;
276
+ }
277
+ }
278
+ exports.UpdateQueryBuilder = UpdateQueryBuilder;
279
+ (0, prevent_await_js_1.preventAwait)(UpdateQueryBuilder, "don't await UpdateQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
@@ -0,0 +1,378 @@
1
+ import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
2
+ import { ReferenceExpression } from '../parser/reference-parser.js';
3
+ import { AnyRawBuilder } from '../util/type-utils.js';
4
+ export interface WhereInterface<DB, TB extends keyof DB> {
5
+ /**
6
+ * Adds a `where` clause to the query.
7
+ *
8
+ * Also see {@link orWhere}, {@link whereExists} and {@link whereRef}.
9
+ *
10
+ * ### Examples
11
+ *
12
+ * Find a row by column value:
13
+ *
14
+ * ```ts
15
+ * const person = await db
16
+ * .selectFrom('person')
17
+ * .selectAll()
18
+ * .where('id', '=', 100)
19
+ * .executeTakeFirst()
20
+ * ```
21
+ *
22
+ * The generated SQL (PostgreSQL):
23
+ *
24
+ * ```sql
25
+ * select * from "person" where "id" = $1
26
+ * ```
27
+ *
28
+ * Operator can be any supported operator or if the typings don't support it
29
+ * you can always use `db.raw('your operator')`.
30
+ *
31
+ * ```ts
32
+ * const persons = await db
33
+ * .selectFrom('person')
34
+ * .selectAll()
35
+ * .where('id', '>', 100)
36
+ * .execute()
37
+ * ```
38
+ *
39
+ * The generated SQL (PostgreSQL):
40
+ *
41
+ * ```sql
42
+ * select * from "person" where "id" > $1
43
+ * ```
44
+ *
45
+ * The `where` methods don't change the type of the query. You can add
46
+ * conditional `where`s easily by doing something like this:
47
+ *
48
+ * ```ts
49
+ * let query = db
50
+ * .selectFrom('person')
51
+ * .selectAll()
52
+ *
53
+ * if (firstName) {
54
+ * query = query.where('first_name', '=', firstName)
55
+ * }
56
+ *
57
+ * const persons = await query.execute()
58
+ * ```
59
+ *
60
+ * This is true for basically all methods execpt the `select` and
61
+ * `returning` methods, which DO change the return type of the
62
+ * query.
63
+ *
64
+ * Both the first and third argument can also be subqueries.
65
+ * A subquery is defined by passing a function and calling
66
+ * the `selectFrom` method of the object passed into the
67
+ * function:
68
+ *
69
+ * ```ts
70
+ * const persons = await db
71
+ * .selectFrom('person')
72
+ * .selectAll()
73
+ * .where(
74
+ * (qb) => qb.selectFrom('pet')
75
+ * .select('pet.name')
76
+ * .whereRef('pet.owner_id', '=', 'person.id')
77
+ * .limit(1),
78
+ * '=',
79
+ * 'Fluffy'
80
+ * )
81
+ * .execute()
82
+ * ```
83
+ *
84
+ * The generated SQL (PostgreSQL):
85
+ *
86
+ * ```sql
87
+ * select *
88
+ * from "person"
89
+ * where (
90
+ * select "pet"."name"
91
+ * from "pet"
92
+ * where "pet"."owner_id" = "person"."id"
93
+ * limit $1
94
+ * ) = $2
95
+ * ```
96
+ *
97
+ * A `where in` query can be built by using the `in` operator and an array
98
+ * of values. The values in the array can also be subqueries or raw
99
+ * instances.
100
+ *
101
+ * ```ts
102
+ * const persons = await db
103
+ * .selectFrom('person')
104
+ * .selectAll()
105
+ * .where('person.id', 'in', [100, 200, 300])
106
+ * .execute()
107
+ * ```
108
+ *
109
+ * The generated SQL (PostgreSQL):
110
+ *
111
+ * ```sql
112
+ * select * from "person" where "id" in ($1, $2, $3)
113
+ * ```
114
+ *
115
+ * If everything else fails, you can always pass {@link Kysely.raw | raw}
116
+ * as any of the arguments, including the operator:
117
+ *
118
+ * ```ts
119
+ * const persons = await db
120
+ * .selectFrom('person')
121
+ * .selectAll()
122
+ * .where(
123
+ * db.raw('coalesce(first_name, last_name)'),
124
+ * 'like',
125
+ * '%' + name + '%',
126
+ * )
127
+ * .execute()
128
+ * ```
129
+ *
130
+ * The generated SQL (PostgreSQL):
131
+ *
132
+ * ```sql
133
+ * select * from "person"
134
+ * where coalesce(first_name, last_name) like $1
135
+ * ```
136
+ *
137
+ * If you only pass one function argument to this method, it can be
138
+ * used to create parentheses around other where statements:
139
+ *
140
+ * ```ts
141
+ * const persons = await db
142
+ * .selectFrom('person')
143
+ * .selectAll()
144
+ * .where((qb) => qb
145
+ * .where('id', '=', 1)
146
+ * .orWhere('id', '=', 2)
147
+ * )
148
+ * .execute()
149
+ * ```
150
+ *
151
+ * The generated SQL (PostgreSQL):
152
+ *
153
+ * ```sql
154
+ * select * from "person" (where "id" = 1 or "id" = 2)
155
+ * ```
156
+ *
157
+ * In all examples above the columns were known at compile time
158
+ * (except for the `raw` expressions). By default kysely only allows
159
+ * you to refer to columns that exist in the database **and** can be
160
+ * referred to in the current query and context.
161
+ *
162
+ * Sometimes you may want to refer to columns that come from the user
163
+ * input and thus are not available at compile time.
164
+ *
165
+ * You have two options, `db.raw` or `db.dynamic`. The example below
166
+ * uses both:
167
+ *
168
+ * ```ts
169
+ * const { ref } = db.dynamic
170
+ *
171
+ * const persons = await db
172
+ * .selectFrom('person')
173
+ * .selectAll()
174
+ * .where(ref(columnFromUserInput), '=', 1)
175
+ * .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
176
+ * .execute()
177
+ * ```
178
+ */
179
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
180
+ where(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
181
+ where(raw: AnyRawBuilder): WhereInterface<DB, TB>;
182
+ /**
183
+ * Adds a `where` clause where both sides of the operator are references
184
+ * to columns.
185
+ *
186
+ * The normal `where` method treats the right hand side argument as a
187
+ * value by default. `whereRef` treats it as a column reference. This method is
188
+ * expecially useful with joins and correclated subqueries.
189
+ *
190
+ * ### Examples
191
+ *
192
+ * Usage with a join:
193
+ *
194
+ * ```ts
195
+ * db.selectFrom(['person', 'pet'])
196
+ * .selectAll()
197
+ * .whereRef('person.first_name', '=', 'pet.name')
198
+ * ```
199
+ *
200
+ * The generated SQL (PostgreSQL):
201
+ *
202
+ * ```sql
203
+ * select * from "person", "pet" where "person"."first_name" = "pet"."name"
204
+ * ```
205
+ *
206
+ * Usage in a subquery:
207
+ *
208
+ * ```ts
209
+ * const persons = await db
210
+ * .selectFrom('person')
211
+ * .selectAll('person')
212
+ * .select((qb) => qb
213
+ * .selectFrom('pet')
214
+ * .select('name')
215
+ * .whereRef('pet.owner_id', '=', 'person.id')
216
+ * .limit(1)
217
+ * .as('pet_name')
218
+ * )
219
+ * .execute()
220
+ * ```
221
+ *
222
+ * The generated SQL (PostgreSQL):
223
+ *
224
+ * ```sql
225
+ * select "person".*, (
226
+ * select "name"
227
+ * from "pet"
228
+ * where "pet"."owner_id" = "person"."id"
229
+ * limit $1
230
+ * ) as "pet_name"
231
+ * from "person"
232
+ */
233
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
234
+ /**
235
+ * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
236
+ *
237
+ * It's often necessary to wrap `or where` clauses in parentheses to control
238
+ * precendence. You can use the one argument version of the `where` method
239
+ * for that. See the examples.
240
+ *
241
+ * ### Examples
242
+ *
243
+ * ```ts
244
+ * const persons = await db
245
+ * .selectFrom('person')
246
+ * .selectAll()
247
+ * .where('id', '=', 1)
248
+ * .orWhere('id', '=', 2)
249
+ * .execute()
250
+ * ```
251
+ *
252
+ * The generated SQL (PostgreSQL):
253
+ *
254
+ * ```sql
255
+ * select * from "person" where "id" = 1 or "id" = 2
256
+ * ```
257
+ *
258
+ * Grouping with parentheses:
259
+ *
260
+ * ```ts
261
+ * const persons = await db
262
+ * .selectFrom('person')
263
+ * .selectAll()
264
+ * .where((qb) => qb
265
+ * .where('id', '=', 1)
266
+ * .orWhere('id', '=', 2)
267
+ * )
268
+ * .execute()
269
+ * ```
270
+ *
271
+ * The generated SQL (PostgreSQL):
272
+ *
273
+ * ```sql
274
+ * select * from "person" (where "id" = 1 or "id" = 2)
275
+ * ```
276
+ *
277
+ * Even the first `where` can be an `orWhere`. This is useful
278
+ * if you are looping through a set of conditions:
279
+ *
280
+ * ```ts
281
+ * const persons = await db
282
+ * .selectFrom('person')
283
+ * .selectAll()
284
+ * .where((qb) => qb
285
+ * .orWhere('id', '=', 1)
286
+ * .orWhere('id', '=', 2)
287
+ * )
288
+ * .execute()
289
+ * ```
290
+ *
291
+ * The generated SQL (PostgreSQL):
292
+ *
293
+ * ```sql
294
+ * select * from "person" (where "id" = 1 or "id" = 2)
295
+ * ```
296
+ */
297
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
298
+ orWhere(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
299
+ orWhere(raw: AnyRawBuilder): WhereInterface<DB, TB>;
300
+ /**
301
+ * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
302
+ *
303
+ * Also see {@link orWhere} and {@link where}.
304
+ */
305
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
306
+ /**
307
+ * Adds a `where exists` clause to the query.
308
+ *
309
+ * You can either use a subquery or a raw instance.
310
+ *
311
+ * ### Examples
312
+ *
313
+ * The query below selets all persons that own a pet named Catto:
314
+ *
315
+ * ```ts
316
+ * const persons = await db
317
+ * .selectFrom('person')
318
+ * .selectAll()
319
+ * .whereExists((qb) => qb
320
+ * .selectFrom('pet')
321
+ * .select('pet.id')
322
+ * .whereRef('person.id', '=', 'pet.owner_id')
323
+ * .where('pet.name', '=', 'Catto')
324
+ * )
325
+ * .execute()
326
+ * ```
327
+ *
328
+ * The generated SQL (PostgreSQL):
329
+ *
330
+ * ```sql
331
+ * select * from "person"
332
+ * where exists (
333
+ * select "pet"."id"
334
+ * from "pet"
335
+ * where "person"."id" = "pet"."owner_id"
336
+ * and "pet"."name" = $1
337
+ * )
338
+ * ```
339
+ *
340
+ * The same query as in the previous example but with using raw:
341
+ *
342
+ * ```ts
343
+ * db.selectFrom('person')
344
+ * .selectAll()
345
+ * .whereExists(
346
+ * db.raw(
347
+ * '(select pet.id from pet where person.id = pet.owner_id and pet.name = ?)',
348
+ * ['Catto']
349
+ * )
350
+ * )
351
+ * ```
352
+ *
353
+ * The generated SQL (PostgreSQL):
354
+ *
355
+ * ```sql
356
+ * select * from "person"
357
+ * where exists (
358
+ * select pet.id
359
+ * from pet
360
+ * where person.id = pet.owner_id
361
+ * and pet.name = $1
362
+ * )
363
+ * ```
364
+ */
365
+ whereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
366
+ /**
367
+ * Just like {@link whereExists} but creates a `not exists` clause.
368
+ */
369
+ whereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
370
+ /**
371
+ * Just like {@link whereExists} but creates a `or exists` clause.
372
+ */
373
+ orWhereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
374
+ /**
375
+ * Just like {@link whereExists} but creates a `or not exists` clause.
376
+ */
377
+ orWhereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
378
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -67,6 +67,7 @@ import { DropViewNode } from '../operation-node/drop-view-node.js';
67
67
  import { GeneratedAlwaysAsNode } from '../operation-node/generated-always-as-node.js';
68
68
  import { DefaultValueNode } from '../operation-node/default-value-node.js';
69
69
  import { OnNode } from '../operation-node/on-node.js';
70
+ import { ValuesNode } from '../operation-node/values-node.js';
70
71
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
71
72
  #private;
72
73
  protected get numParameters(): number;
@@ -81,6 +82,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
81
82
  protected visitWhere(node: WhereNode): void;
82
83
  protected visitHaving(node: HavingNode): void;
83
84
  protected visitInsertQuery(node: InsertQueryNode): void;
85
+ protected visitValues(node: ValuesNode): void;
84
86
  protected visitDeleteQuery(node: DeleteQueryNode): void;
85
87
  protected visitReturning(node: ReturningNode): void;
86
88
  protected visitAlias(node: AliasNode): void;