kysely 0.23.5 → 0.24.0

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 (294) hide show
  1. package/README.md +46 -24
  2. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
  3. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  7. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
  8. package/dist/cjs/driver/runtime-driver.js +4 -2
  9. package/dist/cjs/expression/expression-builder.d.ts +386 -0
  10. package/dist/cjs/expression/expression-builder.js +92 -0
  11. package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
  12. package/dist/cjs/expression/expression-wrapper.js +54 -0
  13. package/dist/cjs/expression/expression.d.ts +1 -1
  14. package/dist/cjs/helpers/postgres.d.ts +133 -0
  15. package/dist/cjs/helpers/postgres.js +141 -0
  16. package/dist/cjs/index.d.ts +4 -3
  17. package/dist/cjs/index.js +4 -2
  18. package/dist/cjs/kysely.d.ts +10 -0
  19. package/dist/cjs/kysely.js +12 -1
  20. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  21. package/dist/cjs/migration/migrator.d.ts +5 -2
  22. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
  23. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  24. package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
  25. package/dist/cjs/operation-node/delete-query-node.js +0 -6
  26. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  27. package/dist/cjs/operation-node/function-node.js +19 -0
  28. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  29. package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
  30. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  31. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  32. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  33. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  34. package/dist/cjs/operation-node/operator-node.js +38 -3
  35. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  36. package/dist/cjs/operation-node/query-node.js +9 -2
  37. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  38. package/dist/cjs/operation-node/select-query-node.js +0 -6
  39. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  40. package/dist/cjs/operation-node/update-query-node.js +0 -6
  41. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  42. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  43. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  44. package/dist/cjs/parser/coalesce-parser.js +0 -9
  45. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  46. package/dist/cjs/parser/expression-parser.js +3 -3
  47. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  48. package/dist/cjs/parser/group-by-parser.js +3 -0
  49. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  50. package/dist/cjs/parser/insert-values-parser.js +19 -13
  51. package/dist/cjs/parser/join-parser.js +1 -1
  52. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  53. package/dist/cjs/parser/parse-utils.js +1 -8
  54. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  55. package/dist/cjs/parser/select-parser.d.ts +5 -13
  56. package/dist/cjs/parser/select-parser.js +8 -4
  57. package/dist/cjs/parser/table-parser.d.ts +5 -3
  58. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  59. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  60. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  61. package/dist/cjs/parser/update-set-parser.js +9 -4
  62. package/dist/cjs/parser/value-parser.d.ts +5 -0
  63. package/dist/cjs/parser/value-parser.js +1 -3
  64. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  65. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  66. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  67. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  68. package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
  69. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  70. package/dist/cjs/query-builder/delete-result.js +3 -0
  71. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  72. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  73. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  74. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  75. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  76. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  77. package/dist/cjs/query-builder/function-module.d.ts +40 -12
  78. package/dist/cjs/query-builder/function-module.js +43 -329
  79. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  80. package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
  81. package/dist/cjs/query-builder/insert-query-builder.js +21 -29
  82. package/dist/cjs/query-builder/insert-result.js +3 -0
  83. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  84. package/dist/cjs/query-builder/join-builder.js +17 -22
  85. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  86. package/dist/cjs/query-builder/no-result-error.js +5 -1
  87. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  88. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  89. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  90. package/dist/cjs/query-builder/over-builder.js +7 -0
  91. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  92. package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
  93. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  94. package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
  95. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  96. package/dist/cjs/query-builder/update-result.js +3 -0
  97. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  98. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  99. package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
  100. package/dist/cjs/query-creator.d.ts +9 -2
  101. package/dist/cjs/query-creator.js +1 -24
  102. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  103. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  104. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  105. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  106. package/dist/cjs/raw-builder/sql.js +8 -2
  107. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  108. package/dist/cjs/schema/alter-column-builder.js +7 -0
  109. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  110. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  111. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  112. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  113. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  114. package/dist/cjs/schema/column-definition-builder.js +8 -1
  115. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  116. package/dist/cjs/schema/create-index-builder.js +17 -0
  117. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  118. package/dist/cjs/schema/create-schema-builder.js +7 -0
  119. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  120. package/dist/cjs/schema/create-table-builder.js +3 -1
  121. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  122. package/dist/cjs/schema/create-type-builder.js +7 -0
  123. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  124. package/dist/cjs/schema/create-view-builder.js +7 -0
  125. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  126. package/dist/cjs/schema/drop-index-builder.js +7 -0
  127. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  128. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  129. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  130. package/dist/cjs/schema/drop-table-builder.js +7 -0
  131. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  132. package/dist/cjs/schema/drop-type-builder.js +7 -0
  133. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  134. package/dist/cjs/schema/drop-view-builder.js +7 -0
  135. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  136. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  137. package/dist/cjs/util/compilable.d.ts +1 -0
  138. package/dist/cjs/util/compilable.js +6 -0
  139. package/dist/cjs/util/explainable.d.ts +35 -0
  140. package/dist/cjs/util/log.d.ts +2 -0
  141. package/dist/cjs/util/object-utils.js +1 -1
  142. package/dist/cjs/util/streamable.d.ts +29 -0
  143. package/dist/cjs/util/streamable.js +2 -0
  144. package/dist/cjs/util/type-utils.d.ts +1 -0
  145. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  146. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  147. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  148. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  149. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  150. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  151. package/dist/esm/driver/runtime-driver.js +4 -2
  152. package/dist/esm/expression/expression-builder.d.ts +386 -0
  153. package/dist/esm/expression/expression-builder.js +88 -0
  154. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  155. package/dist/esm/expression/expression-wrapper.js +50 -0
  156. package/dist/esm/expression/expression.d.ts +1 -1
  157. package/dist/esm/helpers/postgres.d.ts +133 -0
  158. package/dist/esm/helpers/postgres.js +136 -0
  159. package/dist/esm/index.d.ts +4 -3
  160. package/dist/esm/index.js +2 -1
  161. package/dist/esm/kysely.d.ts +10 -0
  162. package/dist/esm/kysely.js +13 -2
  163. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  164. package/dist/esm/migration/migrator.d.ts +5 -2
  165. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
  166. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  167. package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
  168. package/dist/esm/operation-node/delete-query-node.js +0 -6
  169. package/dist/esm/operation-node/function-node.d.ts +13 -0
  170. package/dist/esm/operation-node/function-node.js +17 -0
  171. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  172. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  173. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  174. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  175. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  176. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  177. package/dist/esm/operation-node/operator-node.js +34 -3
  178. package/dist/esm/operation-node/query-node.d.ts +25 -8
  179. package/dist/esm/operation-node/query-node.js +9 -2
  180. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  181. package/dist/esm/operation-node/select-query-node.js +0 -6
  182. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  183. package/dist/esm/operation-node/update-query-node.js +0 -6
  184. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  185. package/dist/esm/parser/binary-operation-parser.js +85 -37
  186. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  187. package/dist/esm/parser/coalesce-parser.js +1 -7
  188. package/dist/esm/parser/expression-parser.d.ts +7 -3
  189. package/dist/esm/parser/expression-parser.js +3 -3
  190. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  191. package/dist/esm/parser/group-by-parser.js +3 -0
  192. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  193. package/dist/esm/parser/insert-values-parser.js +18 -12
  194. package/dist/esm/parser/join-parser.js +2 -2
  195. package/dist/esm/parser/parse-utils.d.ts +0 -2
  196. package/dist/esm/parser/parse-utils.js +0 -6
  197. package/dist/esm/parser/returning-parser.d.ts +2 -1
  198. package/dist/esm/parser/select-parser.d.ts +5 -13
  199. package/dist/esm/parser/select-parser.js +7 -3
  200. package/dist/esm/parser/table-parser.d.ts +5 -3
  201. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  202. package/dist/esm/parser/unary-operation-parser.js +8 -8
  203. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  204. package/dist/esm/parser/update-set-parser.js +7 -2
  205. package/dist/esm/parser/value-parser.d.ts +5 -0
  206. package/dist/esm/parser/value-parser.js +1 -3
  207. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  208. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  209. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  210. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  211. package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
  212. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  213. package/dist/esm/query-builder/delete-result.js +3 -0
  214. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  215. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  216. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  217. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  218. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  219. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  220. package/dist/esm/query-builder/function-module.d.ts +40 -12
  221. package/dist/esm/query-builder/function-module.js +42 -328
  222. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  223. package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
  224. package/dist/esm/query-builder/insert-query-builder.js +25 -33
  225. package/dist/esm/query-builder/insert-result.js +3 -0
  226. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  227. package/dist/esm/query-builder/join-builder.js +18 -23
  228. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  229. package/dist/esm/query-builder/no-result-error.js +3 -0
  230. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  231. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  232. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  233. package/dist/esm/query-builder/over-builder.js +7 -0
  234. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  235. package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
  236. package/dist/esm/query-builder/select-query-builder.js +337 -82
  237. package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
  238. package/dist/esm/query-builder/update-query-builder.js +25 -119
  239. package/dist/esm/query-builder/update-result.js +3 -0
  240. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  241. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  242. package/dist/esm/query-compiler/default-query-compiler.js +17 -1
  243. package/dist/esm/query-creator.d.ts +9 -2
  244. package/dist/esm/query-creator.js +1 -24
  245. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  246. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  247. package/dist/esm/raw-builder/raw-builder.js +13 -7
  248. package/dist/esm/raw-builder/sql.d.ts +17 -9
  249. package/dist/esm/raw-builder/sql.js +8 -2
  250. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  251. package/dist/esm/schema/alter-column-builder.js +7 -0
  252. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  253. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  254. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  255. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  256. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  257. package/dist/esm/schema/column-definition-builder.js +8 -1
  258. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  259. package/dist/esm/schema/create-index-builder.js +17 -0
  260. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  261. package/dist/esm/schema/create-schema-builder.js +7 -0
  262. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  263. package/dist/esm/schema/create-table-builder.js +3 -1
  264. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  265. package/dist/esm/schema/create-type-builder.js +7 -0
  266. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  267. package/dist/esm/schema/create-view-builder.js +7 -0
  268. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  269. package/dist/esm/schema/drop-index-builder.js +7 -0
  270. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  271. package/dist/esm/schema/drop-schema-builder.js +7 -0
  272. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  273. package/dist/esm/schema/drop-table-builder.js +7 -0
  274. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  275. package/dist/esm/schema/drop-type-builder.js +7 -0
  276. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  277. package/dist/esm/schema/drop-view-builder.js +7 -0
  278. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  279. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  280. package/dist/esm/util/compilable.d.ts +1 -0
  281. package/dist/esm/util/compilable.js +4 -1
  282. package/dist/esm/util/explainable.d.ts +35 -0
  283. package/dist/esm/util/log.d.ts +2 -0
  284. package/dist/esm/util/object-utils.js +1 -1
  285. package/dist/esm/util/streamable.d.ts +29 -0
  286. package/dist/esm/util/streamable.js +2 -0
  287. package/dist/esm/util/type-utils.d.ts +1 -0
  288. package/helpers/postgres.d.ts +1 -0
  289. package/helpers/postgres.js +1 -0
  290. package/package.json +20 -9
  291. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  292. package/dist/cjs/query-builder/expression-builder.js +0 -107
  293. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  294. package/dist/esm/query-builder/expression-builder.js +0 -104
@@ -2,77 +2,62 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
2
2
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
3
3
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
4
4
  import { From, FromTables, TableExpression } from '../parser/table-parser.js';
5
- import { SelectExpression } from '../parser/select-parser.js';
6
- import { ReturningRow } from '../parser/returning-parser.js';
5
+ import { SelectExpression, SelectArg } from '../parser/select-parser.js';
6
+ import { ReturningAllRow, ReturningRow } from '../parser/returning-parser.js';
7
7
  import { ReferenceExpression } from '../parser/reference-parser.js';
8
+ import { QueryNode } from '../operation-node/query-node.js';
8
9
  import { MergePartial, Nullable, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
9
10
  import { Compilable } from '../util/compilable.js';
10
11
  import { QueryExecutor } from '../query-executor/query-executor.js';
11
12
  import { QueryId } from '../util/query-id.js';
12
13
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
13
- import { WhereInterface } from './where-interface.js';
14
+ import { WhereExpressionFactory, WhereInterface } from './where-interface.js';
14
15
  import { ReturningInterface } from './returning-interface.js';
15
16
  import { NoResultErrorConstructor } from './no-result-error.js';
16
17
  import { DeleteResult } from './delete-result.js';
17
18
  import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
18
- import { Selectable } from '../util/column-type.js';
19
19
  import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
20
20
  import { Explainable, ExplainFormat } from '../util/explainable.js';
21
21
  import { AliasedExpression, Expression } from '../expression/expression.js';
22
- import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
22
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
23
23
  import { ExistsExpression } from '../parser/unary-operation-parser.js';
24
24
  import { KyselyTypeError } from '../util/type-error.js';
25
- export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable {
25
+ import { Streamable } from '../util/streamable.js';
26
+ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
26
27
  #private;
27
28
  constructor(props: DeleteQueryBuilderProps);
28
29
  /**
29
- * Adds a `where` clause to the query.
30
+ * Adds a `where` expression to the query.
30
31
  *
31
- * Also see {@link orWhere}, {@link whereExists} and {@link whereRef}.
32
+ * Calling this method multiple times will combine the expressions using `and`.
32
33
  *
33
- * ### Examples
34
+ * Also see {@link whereRef}
34
35
  *
35
- * Find a row by column value:
36
+ * ### Examples
36
37
  *
37
38
  * ```ts
38
39
  * const person = await db
39
40
  * .selectFrom('person')
40
41
  * .selectAll()
41
- * .where('id', '=', 100)
42
+ * .where('first_name', '=', 'Jennifer')
43
+ * .where('age', '>', 40)
42
44
  * .executeTakeFirst()
43
45
  * ```
44
46
  *
45
47
  * The generated SQL (PostgreSQL):
46
48
  *
47
49
  * ```sql
48
- * select * from "person" where "id" = $1
50
+ * select * from "person" where "first_name" = $1 and "age" > $2
49
51
  * ```
50
52
  *
51
53
  * Operator can be any supported operator or if the typings don't support it
52
- * you can always use
54
+ * you can always use:
53
55
  *
54
56
  * ```ts
55
57
  * sql`your operator`
56
58
  * ```
57
59
  *
58
- * The next example uses the `>` operator:
59
- *
60
- * ```ts
61
- * const persons = await db
62
- * .selectFrom('person')
63
- * .selectAll()
64
- * .where('id', '>', 100)
65
- * .execute()
66
- * ```
67
- *
68
- * The generated SQL (PostgreSQL):
69
- *
70
- * ```sql
71
- * select * from "person" where "id" > $1
72
- * ```
73
- *
74
- * `where` methods don't change the type of the query. You can add
75
- * conditional statements easily by doing something like this:
60
+ * You can add expressions conditionally like this:
76
61
  *
77
62
  * ```ts
78
63
  * let query = db
@@ -85,16 +70,16 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
85
70
  * query = query.where('first_name', '=', firstName)
86
71
  * }
87
72
  *
73
+ * if (lastName) {
74
+ * query = query.where('last_name', '=', lastName)
75
+ * }
76
+ *
88
77
  * const persons = await query.execute()
89
78
  * ```
90
79
  *
91
- * This is true for basically all methods execpt the `select` and
92
- * `returning`, that __do__ change the return type of the query.
93
- *
94
- * Both the first and third argument can also be subqueries.
95
- * A subquery is defined by passing a function and calling
96
- * the `selectFrom` method of the object passed into the
97
- * function:
80
+ * Both the first and third argument can also be arbitrary expressions like
81
+ * subqueries. An expression can defined by passing a function and calling
82
+ * the methods of the {@link ExpressionBuilder} passed to the callback:
98
83
  *
99
84
  * ```ts
100
85
  * const persons = await db
@@ -125,8 +110,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
125
110
  * ```
126
111
  *
127
112
  * A `where in` query can be built by using the `in` operator and an array
128
- * of values. The values in the array can also be subqueries or raw
129
- * {@link sql} expressions.
113
+ * of values. The values in the array can also be expressions:
130
114
  *
131
115
  * ```ts
132
116
  * const persons = await db
@@ -142,40 +126,53 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
142
126
  * select * from "person" where "id" in ($1, $2, $3)
143
127
  * ```
144
128
  *
145
- * If everything else fails, you can always use the {@link sql} tag
146
- * as any of the arguments, including the operator:
129
+ * For complex `where` expressions you can pass in a single callback and
130
+ * use the {@link ExpressionBuilder} to build your expression:
147
131
  *
148
132
  * ```ts
149
- * import { sql } from 'kysely'
150
- *
151
133
  * const persons = await db
152
134
  * .selectFrom('person')
153
- * .selectAll()
154
- * .where(
155
- * sql`coalesce(first_name, last_name)`,
156
- * 'like',
157
- * '%' + name + '%',
158
- * )
159
- * .execute()
135
+ * .selectAll('person')
136
+ * .where(({ cmpr, or, and, not, exists, selectFrom, val }) => and([
137
+ * or([
138
+ * cmpr('first_name', '=', firstName),
139
+ * cmpr('age', '<', maxAge)
140
+ * ]),
141
+ * not(exists(
142
+ * selectFrom('pet').select('pet.id').whereRef('pet.owner_id', '=', 'person.id')
143
+ * ))
144
+ * ]))
160
145
  * ```
161
146
  *
162
147
  * The generated SQL (PostgreSQL):
163
148
  *
164
149
  * ```sql
165
- * select * from "person"
166
- * where coalesce(first_name, last_name) like $1
150
+ * select "person".*
151
+ * from "person"
152
+ * where (
153
+ * (
154
+ * "first_name" = $1
155
+ * or "age" < $2
156
+ * )
157
+ * and not exists (
158
+ * select "pet"."id" from "pet" where "pet"."owner_id" = "person"."id"
159
+ * )
160
+ * )
167
161
  * ```
168
162
  *
169
- * If you only pass one function argument to this method, it can be
170
- * used to create parentheses around other where statements:
163
+ * If everything else fails, you can always use the {@link sql} tag
164
+ * as any of the arguments, including the operator:
171
165
  *
172
166
  * ```ts
167
+ * import { sql } from 'kysely'
168
+ *
173
169
  * const persons = await db
174
170
  * .selectFrom('person')
175
171
  * .selectAll()
176
- * .where((qb) => qb
177
- * .where('id', '=', 1)
178
- * .orWhere('id', '=', 2)
172
+ * .where(
173
+ * sql`coalesce(first_name, last_name)`,
174
+ * 'like',
175
+ * '%' + name + '%',
179
176
  * )
180
177
  * .execute()
181
178
  * ```
@@ -183,7 +180,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
183
180
  * The generated SQL (PostgreSQL):
184
181
  *
185
182
  * ```sql
186
- * select * from "person" (where "id" = 1 or "id" = 2)
183
+ * select * from "person"
184
+ * where coalesce(first_name, last_name) like $1
187
185
  * ```
188
186
  *
189
187
  * In all examples above the columns were known at compile time
@@ -205,12 +203,12 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
205
203
  * .selectFrom('person')
206
204
  * .selectAll()
207
205
  * .where(ref(columnFromUserInput), '=', 1)
208
- * .orWhere(sql.id(columnFromUserInput), '=', 2)
206
+ * .where(sql.id(columnFromUserInput), '=', 2)
209
207
  * .execute()
210
208
  * ```
211
209
  */
212
210
  where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): DeleteQueryBuilder<DB, TB, O>;
213
- where(grouper: WhereGrouper<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
211
+ where(factory: WhereExpressionFactory<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
214
212
  where(expression: Expression<any>): DeleteQueryBuilder<DB, TB, O>;
215
213
  /**
216
214
  * Adds a `where` clause where both sides of the operator are references
@@ -242,7 +240,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
242
240
  * const persons = await db
243
241
  * .selectFrom('person')
244
242
  * .selectAll('person')
245
- * .select((qb) => qb
243
+ * .select((eb) => eb
246
244
  * .selectFrom('pet')
247
245
  * .select('name')
248
246
  * .whereRef('pet.owner_id', '=', 'person.id')
@@ -265,152 +263,33 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
265
263
  */
266
264
  whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
267
265
  /**
268
- * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
269
- *
270
- * It's often necessary to wrap `or where` clauses in parentheses to control
271
- * precendence. You can use the one argument version of the `where` method
272
- * for that. See the examples.
273
- *
274
- * ### Examples
275
- *
276
- * ```ts
277
- * const persons = await db
278
- * .selectFrom('person')
279
- * .selectAll()
280
- * .where('id', '=', 1)
281
- * .orWhere('id', '=', 2)
282
- * .execute()
283
- * ```
284
- *
285
- * The generated SQL (PostgreSQL):
286
- *
287
- * ```sql
288
- * select * from "person" where "id" = 1 or "id" = 2
289
- * ```
290
- *
291
- * Grouping with parentheses:
292
- *
293
- * ```ts
294
- * const persons = await db
295
- * .selectFrom('person')
296
- * .selectAll()
297
- * .where((qb) => qb
298
- * .where('id', '=', 1)
299
- * .orWhere('id', '=', 2)
300
- * )
301
- * .execute()
302
- * ```
303
- *
304
- * The generated SQL (PostgreSQL):
305
- *
306
- * ```sql
307
- * select * from "person" (where "id" = 1 or "id" = 2)
308
- * ```
309
- *
310
- * Even the first `where` can be an `orWhere`. This is useful
311
- * if you are looping through a set of conditions:
312
- *
313
- * ```ts
314
- * const persons = await db
315
- * .selectFrom('person')
316
- * .selectAll()
317
- * .where((qb) => qb
318
- * .orWhere('id', '=', 1)
319
- * .orWhere('id', '=', 2)
320
- * )
321
- * .execute()
322
- * ```
323
- *
324
- * The generated SQL (PostgreSQL):
325
- *
326
- * ```sql
327
- * select * from "person" (where "id" = 1 or "id" = 2)
328
- * ```
266
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
329
267
  */
330
268
  orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): DeleteQueryBuilder<DB, TB, O>;
331
- orWhere(grouper: WhereGrouper<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
269
+ orWhere(factory: WhereExpressionFactory<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
332
270
  orWhere(expression: Expression<any>): DeleteQueryBuilder<DB, TB, O>;
333
271
  /**
334
- * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
335
- *
336
- * Also see {@link orWhere} and {@link where}.
272
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
337
273
  */
338
274
  orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
339
275
  /**
340
- * Adds a `where exists` clause to the query.
341
- *
342
- * You can either use a subquery or a raw {@link sql} snippet.
343
- *
344
- * ### Examples
345
- *
346
- * The query below selets all persons that own a pet named Catto:
347
- *
348
- * ```ts
349
- * const petName = 'Catto'
350
- * const persons = await db
351
- * .selectFrom('person')
352
- * .selectAll()
353
- * .whereExists((qb) => qb
354
- * .selectFrom('pet')
355
- * .select('pet.id')
356
- * .whereRef('person.id', '=', 'pet.owner_id')
357
- * .where('pet.name', '=', petName)
358
- * )
359
- * .execute()
360
- * ```
361
- *
362
- * The generated SQL (PostgreSQL):
363
- *
364
- * ```sql
365
- * select * from "person"
366
- * where exists (
367
- * select "pet"."id"
368
- * from "pet"
369
- * where "person"."id" = "pet"."owner_id"
370
- * and "pet"."name" = $1
371
- * )
372
- * ```
373
- *
374
- * The same query as in the previous example but with using raw {@link sql}:
375
- *
376
- * ```ts
377
- * import { sql } from 'kysely'
378
- *
379
- * const petName = 'Catto'
380
- * db.selectFrom('person')
381
- * .selectAll()
382
- * .whereExists(
383
- * sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
384
- * )
385
- * ```
386
- *
387
- * The generated SQL (PostgreSQL):
388
- *
389
- * ```sql
390
- * select * from "person"
391
- * where exists (
392
- * select pet.id
393
- * from pet
394
- * where person.id = pet.owner_id
395
- * and pet.name = $1
396
- * )
397
- * ```
276
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
398
277
  */
399
278
  whereExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
400
279
  /**
401
- * Just like {@link whereExists} but creates a `not exists` clause.
280
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
402
281
  */
403
282
  whereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
404
283
  /**
405
- * Just like {@link whereExists} but creates an `or exists` clause.
284
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
406
285
  */
407
286
  orWhereExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
408
287
  /**
409
- * Just like {@link whereExists} but creates an `or not exists` clause.
288
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
410
289
  */
411
290
  orWhereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
412
291
  /**
413
- * Clears all where clauses from the query.
292
+ * Clears all where expressions from the query.
414
293
  *
415
294
  * ### Examples
416
295
  *
@@ -681,21 +560,114 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
681
560
  * first_name: 'Jennifer',
682
561
  * last_name: 'Aniston'
683
562
  * })
684
- * .returning([
563
+ * .returning(eb => [
685
564
  * 'id as id',
686
565
  * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
687
- * (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
566
+ * eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
688
567
  * ])
689
568
  * .executeTakeFirst()
690
569
  * ```
691
570
  */
692
- returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
693
- returning<SE extends SelectExpression<DB, TB>>(selection: SE): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
571
+ returning<SE extends SelectExpression<DB, TB>>(selection: SelectArg<DB, TB, SE>): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
572
+ /**
573
+ * Adds `returning *` or `returning table.*` clause to the query.
574
+ *
575
+ * ### Examples
576
+ *
577
+ * Return all columns.
578
+ *
579
+ * ```ts
580
+ * const pets = await db
581
+ * .deleteFrom('pet')
582
+ * .returningAll()
583
+ * .execute()
584
+ * ```
585
+ *
586
+ * The generated SQL (PostgreSQL)
587
+ *
588
+ * ```sql
589
+ * delete from "pet" returning *
590
+ * ```
591
+ *
592
+ * Return all columns from all tables
593
+ *
594
+ * ```ts
595
+ * const result = ctx.db
596
+ * .deleteFrom('toy')
597
+ * .using(['pet', 'person'])
598
+ * .whereRef('toy.pet_id', '=', 'pet.id')
599
+ * .whereRef('pet.owner_id', '=', 'person.id')
600
+ * .where('person.first_name', '=', 'Zoro')
601
+ * .returningAll()
602
+ * .execute()
603
+ * ```
604
+ *
605
+ * The generated SQL (PostgreSQL)
606
+ *
607
+ * ```sql
608
+ * delete from "toy"
609
+ * using "pet", "person"
610
+ * where "toy"."pet_id" = "pet"."id"
611
+ * and "pet"."owner_id" = "person"."id"
612
+ * and "person"."first_name" = $1
613
+ * returning *
614
+ * ```
615
+ *
616
+ * Return all columns from a single table.
617
+ *
618
+ * ```ts
619
+ * const result = ctx.db
620
+ * .deleteFrom('toy')
621
+ * .using(['pet', 'person'])
622
+ * .whereRef('toy.pet_id', '=', 'pet.id')
623
+ * .whereRef('pet.owner_id', '=', 'person.id')
624
+ * .where('person.first_name', '=', 'Itachi')
625
+ * .returningAll('pet')
626
+ * .execute()
627
+ * ```
628
+ *
629
+ * The generated SQL (PostgreSQL)
630
+ *
631
+ * ```sql
632
+ * delete from "toy"
633
+ * using "pet", "person"
634
+ * where "toy"."pet_id" = "pet"."id"
635
+ * and "pet"."owner_id" = "person"."id"
636
+ * and "person"."first_name" = $1
637
+ * returning "pet".*
638
+ * ```
639
+ *
640
+ * Return all columns from multiple tables.
641
+ *
642
+ * ```ts
643
+ * const result = ctx.db
644
+ * .deleteFrom('toy')
645
+ * .using(['pet', 'person'])
646
+ * .whereRef('toy.pet_id', '=', 'pet.id')
647
+ * .whereRef('pet.owner_id', '=', 'person.id')
648
+ * .where('person.first_name', '=', 'Luffy')
649
+ * .returningAll(['toy', 'pet'])
650
+ * .execute()
651
+ * ```
652
+ *
653
+ * The generated SQL (PostgreSQL)
654
+ *
655
+ * ```sql
656
+ * delete from "toy"
657
+ * using "pet", "person"
658
+ * where "toy"."pet_id" = "pet"."id"
659
+ * and "pet"."owner_id" = "person"."id"
660
+ * and "person"."first_name" = $1
661
+ * returning "toy".*, "pet".*
662
+ * ```
663
+ */
664
+ returningAll<T extends TB>(tables: ReadonlyArray<T>): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, T, O>>;
694
665
  /**
695
666
  * Adds a `returning *` to an insert/update/delete query on databases
696
667
  * that support `returning` such as PostgreSQL.
697
668
  */
698
- returningAll(): DeleteQueryBuilder<DB, TB, Selectable<DB[TB]>>;
669
+ returningAll<T extends TB>(table: T): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, T, O>>;
670
+ returningAll(): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, TB, O>>;
699
671
  /**
700
672
  * Adds an `order by` clause to the query.
701
673
  *
@@ -751,7 +723,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
751
723
  */
752
724
  limit(limit: number): DeleteQueryBuilder<DB, TB, O>;
753
725
  /**
754
- * Simply calls the given function passing `this` as the only argument.
726
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
727
+ * what the provided function returns.
755
728
  *
756
729
  * If you want to conditionally call a method on `this`, see
757
730
  * the {@link $if} method.
@@ -895,24 +868,70 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
895
868
  * the query returned no result.
896
869
  *
897
870
  * By default an instance of {@link NoResultError} is thrown, but you can
898
- * provide a custom error class as the only argument to throw a different
871
+ * provide a custom error class, or callback as the only argument to throw a different
899
872
  * error.
900
873
  */
901
- executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<SimplifyResult<O>>;
874
+ executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor | ((node: QueryNode) => Error)): Promise<SimplifyResult<O>>;
875
+ /**
876
+ * Executes the query and streams the rows.
877
+ *
878
+ * The optional argument `chunkSize` defines how many rows to fetch from the database
879
+ * at a time. It only affects some dialects like PostgreSQL that support it.
880
+ *
881
+ * ### Examples
882
+ *
883
+ * ```ts
884
+ * const stream = db.
885
+ * .selectFrom('person')
886
+ * .select(['first_name', 'last_name'])
887
+ * .where('gender', '=', 'other')
888
+ * .stream()
889
+ *
890
+ * for await (const person of stream) {
891
+ * console.log(person.first_name)
892
+ *
893
+ * if (person.last_name === 'Something') {
894
+ * // Breaking or returning before the stream has ended will release
895
+ * // the database connection and invalidate the stream.
896
+ * break
897
+ * }
898
+ * }
899
+ * ```
900
+ */
901
+ stream(chunkSize?: number): AsyncIterableIterator<O>;
902
902
  /**
903
- * Executes query with `explain` statement before `delete` keyword.
903
+ * Executes query with `explain` statement before the main query.
904
904
  *
905
905
  * ```ts
906
906
  * const explained = await db
907
- * .deleteFrom('person')
908
- * .where('id', '=', 123)
907
+ * .selectFrom('person')
908
+ * .where('gender', '=', 'female')
909
+ * .selectAll()
909
910
  * .explain('json')
910
911
  * ```
911
912
  *
912
913
  * The generated SQL (MySQL):
913
914
  *
914
915
  * ```sql
915
- * explain format=json delete from `person` where `id` = ?
916
+ * explain format=json select * from `person` where `gender` = ?
917
+ * ```
918
+ *
919
+ * You can also execute `explain analyze` statements.
920
+ *
921
+ * ```ts
922
+ * import { sql } from 'kysely'
923
+ *
924
+ * const explained = await db
925
+ * .selectFrom('person')
926
+ * .where('gender', '=', 'female')
927
+ * .selectAll()
928
+ * .explain('json', sql`analyze`)
929
+ * ```
930
+ *
931
+ * The generated SQL (PostgreSQL):
932
+ *
933
+ * ```sql
934
+ * explain (analyze, format json) select * from "person" where "gender" = $1
916
935
  * ```
917
936
  */
918
937
  explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;