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,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteQueryBuilder = 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 prevent_await_js_1 = require("../util/prevent-await.js");
9
+ const object_utils_js_1 = require("../util/object-utils.js");
10
+ const no_result_error_js_1 = require("./no-result-error.js");
11
+ const delete_result_js_1 = require("./delete-result.js");
12
+ class DeleteQueryBuilder {
13
+ #props;
14
+ constructor(props) {
15
+ this.#props = (0, object_utils_js_1.freeze)(props);
16
+ }
17
+ where(...args) {
18
+ return new DeleteQueryBuilder({
19
+ ...this.#props,
20
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
21
+ });
22
+ }
23
+ whereRef(lhs, op, rhs) {
24
+ return new DeleteQueryBuilder({
25
+ ...this.#props,
26
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
27
+ });
28
+ }
29
+ orWhere(...args) {
30
+ return new DeleteQueryBuilder({
31
+ ...this.#props,
32
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
33
+ });
34
+ }
35
+ orWhereRef(lhs, op, rhs) {
36
+ return new DeleteQueryBuilder({
37
+ ...this.#props,
38
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
39
+ });
40
+ }
41
+ whereExists(arg) {
42
+ return new DeleteQueryBuilder({
43
+ ...this.#props,
44
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
45
+ });
46
+ }
47
+ whereNotExists(arg) {
48
+ return new DeleteQueryBuilder({
49
+ ...this.#props,
50
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
51
+ });
52
+ }
53
+ orWhereExists(arg) {
54
+ return new DeleteQueryBuilder({
55
+ ...this.#props,
56
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
57
+ });
58
+ }
59
+ orWhereNotExists(arg) {
60
+ return new DeleteQueryBuilder({
61
+ ...this.#props,
62
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
63
+ });
64
+ }
65
+ innerJoin(...args) {
66
+ return new DeleteQueryBuilder({
67
+ ...this.#props,
68
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'InnerJoin', args)),
69
+ });
70
+ }
71
+ leftJoin(...args) {
72
+ return new DeleteQueryBuilder({
73
+ ...this.#props,
74
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'LeftJoin', args)),
75
+ });
76
+ }
77
+ rightJoin(...args) {
78
+ return new DeleteQueryBuilder({
79
+ ...this.#props,
80
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'RightJoin', args)),
81
+ });
82
+ }
83
+ fullJoin(...args) {
84
+ return new DeleteQueryBuilder({
85
+ ...this.#props,
86
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'FullJoin', args)),
87
+ });
88
+ }
89
+ returning(selection) {
90
+ return new DeleteQueryBuilder({
91
+ ...this.#props,
92
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#props.parseContext, selection)),
93
+ });
94
+ }
95
+ returningAll() {
96
+ return new DeleteQueryBuilder({
97
+ ...this.#props,
98
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)()),
99
+ });
100
+ }
101
+ /**
102
+ * Simply calls the given function passing `this` as the only argument.
103
+ *
104
+ * This method can be useful when adding optional method calls:
105
+ *
106
+ * ### Examples
107
+ *
108
+ * ```ts
109
+ * db.deleteFrom('person')
110
+ * .call((qb) => {
111
+ * if (something) {
112
+ * return qb.where('something', '=', something)
113
+ * } else {
114
+ * return qb.where('somethingElse', '=', somethingElse)
115
+ * }
116
+ * })
117
+ * .execute()
118
+ * ```
119
+ */
120
+ call(func) {
121
+ return func(this);
122
+ }
123
+ /**
124
+ * Change the output type of the query.
125
+ *
126
+ * You should only use this method as the last resort if the types
127
+ * don't support your use case.
128
+ */
129
+ castTo() {
130
+ return new DeleteQueryBuilder(this.#props);
131
+ }
132
+ withPlugin(plugin) {
133
+ return new DeleteQueryBuilder({
134
+ ...this.#props,
135
+ executor: this.#props.executor.withPlugin(plugin),
136
+ });
137
+ }
138
+ toOperationNode() {
139
+ return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);
140
+ }
141
+ compile() {
142
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
143
+ }
144
+ /**
145
+ * Executes the query and returns an array of rows.
146
+ *
147
+ * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
148
+ */
149
+ async execute() {
150
+ const compildQuery = this.compile();
151
+ const query = compildQuery.query;
152
+ const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
153
+ if (this.#props.parseContext.adapter.supportsReturning && query.returning) {
154
+ return result.rows;
155
+ }
156
+ else {
157
+ return [new delete_result_js_1.DeleteResult(result.numUpdatedOrDeletedRows)];
158
+ }
159
+ }
160
+ /**
161
+ * Executes the query and returns the first result or undefined if
162
+ * the query returned no result.
163
+ */
164
+ async executeTakeFirst() {
165
+ const [result] = await this.execute();
166
+ return result;
167
+ }
168
+ /**
169
+ * Executes the query and returns the first result or throws if
170
+ * the query returned no result.
171
+ *
172
+ * By default an instance of {@link NoResultError} is thrown, but you can
173
+ * provide a custom error class as the only argument to throw a different
174
+ * error.
175
+ */
176
+ async executeTakeFirstOrThrow(errorConstructor = no_result_error_js_1.NoResultError) {
177
+ const result = await this.executeTakeFirst();
178
+ if (result === undefined) {
179
+ throw new errorConstructor(this.toOperationNode());
180
+ }
181
+ return result;
182
+ }
183
+ }
184
+ exports.DeleteQueryBuilder = DeleteQueryBuilder;
185
+ (0, prevent_await_js_1.preventAwait)(DeleteQueryBuilder, "don't await DeleteQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
@@ -1,4 +1,5 @@
1
- import { TableExpression, QueryBuilderWithTable } from '../parser/table-parser.js';
1
+ import { SelectQueryBuilder } from './select-query-builder.js';
2
+ import { TableExpression, TableExpressionDatabase, TableExpressionTables } from '../parser/table-parser.js';
2
3
  import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
3
4
  import { ParseContext } from '../parser/parse-context.js';
4
5
  import { FunctionBuilder } from './function-builder.js';
@@ -43,7 +44,8 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
43
44
  * The query builder returned by this method is typed in a way that you can refer to
44
45
  * all tables of the parent query in addition to the subquery's tables.
45
46
  *
46
- * @example
47
+ * ### Examples
48
+ *
47
49
  * This example shows that you can refer to both `pet.owner_id` and `person.id`
48
50
  * columns from the subquery. This is needed to be able to create correlated
49
51
  * subqueries:
@@ -52,7 +54,7 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
52
54
  * const result = await db.selectFrom('pet')
53
55
  * .select([
54
56
  * 'pet.name',
55
- * (qb) => qb.subQuery('person')
57
+ * (qb) => qb.selectFrom('person')
56
58
  * .whereRef('person.id', '=', 'pet.owner_id')
57
59
  * .select('person.first_name')
58
60
  * .as('owner_name')
@@ -74,12 +76,12 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
74
76
  * from "pet"
75
77
  * ```
76
78
  *
77
- * You can use a normal query in place of `(qb) => qb.subQuery(...)` but in
79
+ * You can use a normal query in place of `(qb) => qb.selectFrom(...)` but in
78
80
  * that case Kysely typings wouldn't allow you to reference `pet.owner_id`
79
81
  * because `pet` is not joined to that query.
80
82
  */
81
- subQuery<F extends TableExpression<DB, TB>>(from: F[]): QueryBuilderWithTable<DB, TB, {}, F>;
82
- subQuery<F extends TableExpression<DB, TB>>(from: F): QueryBuilderWithTable<DB, TB, {}, F>;
83
+ selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, {}>;
84
+ selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, {}>;
83
85
  /**
84
86
  * See {@link QueryCreator.withSchema}
85
87
  */
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExpressionBuilder = void 0;
4
- const query_builder_js_1 = require("./query-builder.js");
4
+ const select_query_builder_js_1 = require("./select-query-builder.js");
5
5
  const select_query_node_js_1 = require("../operation-node/select-query-node.js");
6
6
  const table_parser_js_1 = require("../parser/table-parser.js");
7
7
  const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugin.js");
@@ -47,8 +47,8 @@ class ExpressionBuilder {
47
47
  get fn() {
48
48
  return new function_builder_js_1.FunctionBuilder({ executor: this.#props.executor });
49
49
  }
50
- subQuery(table) {
51
- return new query_builder_js_1.QueryBuilder({
50
+ selectFrom(table) {
51
+ return new select_query_builder_js_1.SelectQueryBuilder({
52
52
  queryId: (0, query_id_js_1.createQueryId)(),
53
53
  executor: this.#props.executor,
54
54
  parseContext: this.#props.parseContext,
@@ -4,7 +4,8 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
4
4
  /**
5
5
  * Helpers for type safe SQL function calls.
6
6
  *
7
- * @example
7
+ * ### Examples
8
+ *
8
9
  * ```ts
9
10
  * const { count } = db.fn
10
11
  *
@@ -7,7 +7,8 @@ const query_id_js_1 = require("../util/query-id.js");
7
7
  /**
8
8
  * Helpers for type safe SQL function calls.
9
9
  *
10
- * @example
10
+ * ### Examples
11
+ *
11
12
  * ```ts
12
13
  * const { count } = db.fn
13
14
  *
@@ -0,0 +1,49 @@
1
+ import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, HavingGrouper } from '../parser/filter-parser.js';
2
+ import { ReferenceExpression } from '../parser/reference-parser.js';
3
+ import { AnyRawBuilder } from '../util/type-utils.js';
4
+ export interface HavingInterface<DB, TB extends keyof DB> {
5
+ /**
6
+ * Just like {@link WhereInterface.where | where} but adds a `having` statement
7
+ * instead of a `where` statement.
8
+ */
9
+ having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
10
+ having(grouper: HavingGrouper<DB, TB>): HavingInterface<DB, TB>;
11
+ having(raw: AnyRawBuilder): HavingInterface<DB, TB>;
12
+ /**
13
+ * Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
14
+ * instead of a `where` statement.
15
+ */
16
+ havingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
17
+ /**
18
+ * Just like {@link WhereInterface.orWhere | orWhere} but adds a `having` statement
19
+ * instead of a `where` statement.
20
+ */
21
+ orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
22
+ orHaving(grouper: HavingGrouper<DB, TB>): HavingInterface<DB, TB>;
23
+ orHaving(raw: AnyRawBuilder): HavingInterface<DB, TB>;
24
+ /**
25
+ * Just like {@link WhereInterface.orWhereRef | orWhereRef} but adds a `having` statement
26
+ * instead of a `where` statement.
27
+ */
28
+ orHavingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
29
+ /**
30
+ * Just like {@link WhereInterface.whereExists | whereExists} but adds a `having` statement
31
+ * instead of a `where` statement.
32
+ */
33
+ havingExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
34
+ /**
35
+ * Just like {@link WhereInterface.whereNotExists | whereNotExists} but adds a `having` statement
36
+ * instead of a `where` statement.
37
+ */
38
+ havingNotExist(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
39
+ /**
40
+ * Just like {@link WhereInterface.orWhereExists | orWhereExists} but adds a `having` statement
41
+ * instead of a `where` statement.
42
+ */
43
+ orHavingExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
44
+ /**
45
+ * Just like {@link WhereInterface.orWhereNotExists | orWhereNotExists} but adds a `having` statement
46
+ * instead of a `where` statement.
47
+ */
48
+ orHavingNotExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
49
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });