kysely 0.23.5 → 0.24.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 (300) 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/mysql.d.ts +140 -0
  15. package/dist/cjs/helpers/mysql.js +170 -0
  16. package/dist/cjs/helpers/postgres.d.ts +133 -0
  17. package/dist/cjs/helpers/postgres.js +141 -0
  18. package/dist/cjs/index.d.ts +4 -3
  19. package/dist/cjs/index.js +4 -2
  20. package/dist/cjs/kysely.d.ts +10 -0
  21. package/dist/cjs/kysely.js +12 -1
  22. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  23. package/dist/cjs/migration/migrator.d.ts +5 -2
  24. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
  25. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  26. package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
  27. package/dist/cjs/operation-node/delete-query-node.js +0 -6
  28. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  29. package/dist/cjs/operation-node/function-node.js +19 -0
  30. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  31. package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
  32. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  33. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  34. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  36. package/dist/cjs/operation-node/operator-node.js +38 -3
  37. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  38. package/dist/cjs/operation-node/query-node.js +9 -2
  39. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  40. package/dist/cjs/operation-node/select-query-node.js +0 -6
  41. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  42. package/dist/cjs/operation-node/update-query-node.js +0 -6
  43. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  44. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  45. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  46. package/dist/cjs/parser/coalesce-parser.js +0 -9
  47. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  48. package/dist/cjs/parser/expression-parser.js +3 -3
  49. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  50. package/dist/cjs/parser/group-by-parser.js +3 -0
  51. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  52. package/dist/cjs/parser/insert-values-parser.js +19 -13
  53. package/dist/cjs/parser/join-parser.js +1 -1
  54. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  55. package/dist/cjs/parser/parse-utils.js +1 -8
  56. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  57. package/dist/cjs/parser/select-parser.d.ts +5 -13
  58. package/dist/cjs/parser/select-parser.js +8 -4
  59. package/dist/cjs/parser/table-parser.d.ts +5 -3
  60. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  61. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  62. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  63. package/dist/cjs/parser/update-set-parser.js +9 -4
  64. package/dist/cjs/parser/value-parser.d.ts +5 -0
  65. package/dist/cjs/parser/value-parser.js +1 -3
  66. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  67. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  68. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  69. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  70. package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
  71. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  72. package/dist/cjs/query-builder/delete-result.js +3 -0
  73. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  74. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  75. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  76. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  77. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  78. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  79. package/dist/cjs/query-builder/function-module.d.ts +40 -12
  80. package/dist/cjs/query-builder/function-module.js +43 -329
  81. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  82. package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
  83. package/dist/cjs/query-builder/insert-query-builder.js +21 -29
  84. package/dist/cjs/query-builder/insert-result.js +3 -0
  85. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  86. package/dist/cjs/query-builder/join-builder.js +17 -22
  87. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  88. package/dist/cjs/query-builder/no-result-error.js +5 -1
  89. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  90. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  91. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  92. package/dist/cjs/query-builder/over-builder.js +7 -0
  93. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  94. package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
  95. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  96. package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
  97. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  98. package/dist/cjs/query-builder/update-result.js +3 -0
  99. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  100. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  101. package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
  102. package/dist/cjs/query-creator.d.ts +9 -2
  103. package/dist/cjs/query-creator.js +1 -24
  104. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  105. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  106. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  107. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  108. package/dist/cjs/raw-builder/sql.js +8 -2
  109. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  110. package/dist/cjs/schema/alter-column-builder.js +7 -0
  111. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  112. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  113. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  114. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  115. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  116. package/dist/cjs/schema/column-definition-builder.js +8 -1
  117. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  118. package/dist/cjs/schema/create-index-builder.js +17 -0
  119. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  120. package/dist/cjs/schema/create-schema-builder.js +7 -0
  121. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  122. package/dist/cjs/schema/create-table-builder.js +3 -1
  123. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  124. package/dist/cjs/schema/create-type-builder.js +7 -0
  125. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  126. package/dist/cjs/schema/create-view-builder.js +7 -0
  127. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  128. package/dist/cjs/schema/drop-index-builder.js +7 -0
  129. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  130. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  131. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  132. package/dist/cjs/schema/drop-table-builder.js +7 -0
  133. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  134. package/dist/cjs/schema/drop-type-builder.js +7 -0
  135. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  136. package/dist/cjs/schema/drop-view-builder.js +7 -0
  137. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  138. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  139. package/dist/cjs/util/compilable.d.ts +1 -0
  140. package/dist/cjs/util/compilable.js +6 -0
  141. package/dist/cjs/util/explainable.d.ts +35 -0
  142. package/dist/cjs/util/log.d.ts +2 -0
  143. package/dist/cjs/util/object-utils.js +1 -1
  144. package/dist/cjs/util/streamable.d.ts +29 -0
  145. package/dist/cjs/util/streamable.js +2 -0
  146. package/dist/cjs/util/type-utils.d.ts +1 -0
  147. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  148. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  149. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  150. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  151. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  152. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  153. package/dist/esm/driver/runtime-driver.js +4 -2
  154. package/dist/esm/expression/expression-builder.d.ts +386 -0
  155. package/dist/esm/expression/expression-builder.js +88 -0
  156. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  157. package/dist/esm/expression/expression-wrapper.js +50 -0
  158. package/dist/esm/expression/expression.d.ts +1 -1
  159. package/dist/esm/helpers/mysql.d.ts +140 -0
  160. package/dist/esm/helpers/mysql.js +165 -0
  161. package/dist/esm/helpers/postgres.d.ts +133 -0
  162. package/dist/esm/helpers/postgres.js +136 -0
  163. package/dist/esm/index.d.ts +4 -3
  164. package/dist/esm/index.js +2 -1
  165. package/dist/esm/kysely.d.ts +10 -0
  166. package/dist/esm/kysely.js +13 -2
  167. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  168. package/dist/esm/migration/migrator.d.ts +5 -2
  169. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
  170. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  171. package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
  172. package/dist/esm/operation-node/delete-query-node.js +0 -6
  173. package/dist/esm/operation-node/function-node.d.ts +13 -0
  174. package/dist/esm/operation-node/function-node.js +17 -0
  175. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  176. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  177. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  178. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  179. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  180. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  181. package/dist/esm/operation-node/operator-node.js +34 -3
  182. package/dist/esm/operation-node/query-node.d.ts +25 -8
  183. package/dist/esm/operation-node/query-node.js +9 -2
  184. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  185. package/dist/esm/operation-node/select-query-node.js +0 -6
  186. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  187. package/dist/esm/operation-node/update-query-node.js +0 -6
  188. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  189. package/dist/esm/parser/binary-operation-parser.js +85 -37
  190. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  191. package/dist/esm/parser/coalesce-parser.js +1 -7
  192. package/dist/esm/parser/expression-parser.d.ts +7 -3
  193. package/dist/esm/parser/expression-parser.js +3 -3
  194. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  195. package/dist/esm/parser/group-by-parser.js +3 -0
  196. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  197. package/dist/esm/parser/insert-values-parser.js +18 -12
  198. package/dist/esm/parser/join-parser.js +2 -2
  199. package/dist/esm/parser/parse-utils.d.ts +0 -2
  200. package/dist/esm/parser/parse-utils.js +0 -6
  201. package/dist/esm/parser/returning-parser.d.ts +2 -1
  202. package/dist/esm/parser/select-parser.d.ts +5 -13
  203. package/dist/esm/parser/select-parser.js +7 -3
  204. package/dist/esm/parser/table-parser.d.ts +5 -3
  205. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  206. package/dist/esm/parser/unary-operation-parser.js +8 -8
  207. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  208. package/dist/esm/parser/update-set-parser.js +7 -2
  209. package/dist/esm/parser/value-parser.d.ts +5 -0
  210. package/dist/esm/parser/value-parser.js +1 -3
  211. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  212. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  213. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  214. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  215. package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
  216. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  217. package/dist/esm/query-builder/delete-result.js +3 -0
  218. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  219. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  220. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  221. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  222. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  223. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  224. package/dist/esm/query-builder/function-module.d.ts +40 -12
  225. package/dist/esm/query-builder/function-module.js +42 -328
  226. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  227. package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
  228. package/dist/esm/query-builder/insert-query-builder.js +25 -33
  229. package/dist/esm/query-builder/insert-result.js +3 -0
  230. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  231. package/dist/esm/query-builder/join-builder.js +18 -23
  232. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  233. package/dist/esm/query-builder/no-result-error.js +3 -0
  234. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  235. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  236. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  237. package/dist/esm/query-builder/over-builder.js +7 -0
  238. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  239. package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
  240. package/dist/esm/query-builder/select-query-builder.js +337 -82
  241. package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
  242. package/dist/esm/query-builder/update-query-builder.js +25 -119
  243. package/dist/esm/query-builder/update-result.js +3 -0
  244. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  245. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  246. package/dist/esm/query-compiler/default-query-compiler.js +17 -1
  247. package/dist/esm/query-creator.d.ts +9 -2
  248. package/dist/esm/query-creator.js +1 -24
  249. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  250. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  251. package/dist/esm/raw-builder/raw-builder.js +13 -7
  252. package/dist/esm/raw-builder/sql.d.ts +17 -9
  253. package/dist/esm/raw-builder/sql.js +8 -2
  254. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  255. package/dist/esm/schema/alter-column-builder.js +7 -0
  256. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  257. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  258. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  259. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  260. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  261. package/dist/esm/schema/column-definition-builder.js +8 -1
  262. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  263. package/dist/esm/schema/create-index-builder.js +17 -0
  264. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  265. package/dist/esm/schema/create-schema-builder.js +7 -0
  266. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  267. package/dist/esm/schema/create-table-builder.js +3 -1
  268. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  269. package/dist/esm/schema/create-type-builder.js +7 -0
  270. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  271. package/dist/esm/schema/create-view-builder.js +7 -0
  272. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  273. package/dist/esm/schema/drop-index-builder.js +7 -0
  274. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  275. package/dist/esm/schema/drop-schema-builder.js +7 -0
  276. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  277. package/dist/esm/schema/drop-table-builder.js +7 -0
  278. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  279. package/dist/esm/schema/drop-type-builder.js +7 -0
  280. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  281. package/dist/esm/schema/drop-view-builder.js +7 -0
  282. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  283. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  284. package/dist/esm/util/compilable.d.ts +1 -0
  285. package/dist/esm/util/compilable.js +4 -1
  286. package/dist/esm/util/explainable.d.ts +35 -0
  287. package/dist/esm/util/log.d.ts +2 -0
  288. package/dist/esm/util/object-utils.js +1 -1
  289. package/dist/esm/util/streamable.d.ts +29 -0
  290. package/dist/esm/util/streamable.js +2 -0
  291. package/dist/esm/util/type-utils.d.ts +1 -0
  292. package/helpers/mysql.d.ts +1 -0
  293. package/helpers/mysql.js +1 -0
  294. package/helpers/postgres.d.ts +1 -0
  295. package/helpers/postgres.js +1 -0
  296. package/package.json +26 -9
  297. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  298. package/dist/cjs/query-builder/expression-builder.js +0 -107
  299. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  300. package/dist/esm/query-builder/expression-builder.js +0 -104
@@ -79,6 +79,13 @@ class CreateViewBuilder {
79
79
  }),
80
80
  });
81
81
  }
82
+ /**
83
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
84
+ * what the provided function returns.
85
+ */
86
+ $call(func) {
87
+ return func(this);
88
+ }
82
89
  toOperationNode() {
83
90
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
84
91
  }
@@ -14,6 +14,11 @@ export declare class DropIndexBuilder implements OperationNodeSource, Compilable
14
14
  on(table: string): DropIndexBuilder;
15
15
  ifExists(): DropIndexBuilder;
16
16
  cascade(): DropIndexBuilder;
17
+ /**
18
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
19
+ * what the provided function returns.
20
+ */
21
+ $call<T>(func: (qb: this) => T): T;
17
22
  toOperationNode(): DropIndexNode;
18
23
  compile(): CompiledQuery;
19
24
  execute(): Promise<void>;
@@ -38,6 +38,13 @@ class DropIndexBuilder {
38
38
  }),
39
39
  });
40
40
  }
41
+ /**
42
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
43
+ * what the provided function returns.
44
+ */
45
+ $call(func) {
46
+ return func(this);
47
+ }
41
48
  toOperationNode() {
42
49
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
43
50
  }
@@ -9,6 +9,11 @@ export declare class DropSchemaBuilder implements OperationNodeSource, Compilabl
9
9
  constructor(props: DropSchemaBuilderProps);
10
10
  ifExists(): DropSchemaBuilder;
11
11
  cascade(): DropSchemaBuilder;
12
+ /**
13
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
14
+ * what the provided function returns.
15
+ */
16
+ $call<T>(func: (qb: this) => T): T;
12
17
  toOperationNode(): DropSchemaNode;
13
18
  compile(): CompiledQuery;
14
19
  execute(): Promise<void>;
@@ -25,6 +25,13 @@ class DropSchemaBuilder {
25
25
  }),
26
26
  });
27
27
  }
28
+ /**
29
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
30
+ * what the provided function returns.
31
+ */
32
+ $call(func) {
33
+ return func(this);
34
+ }
28
35
  toOperationNode() {
29
36
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
30
37
  }
@@ -9,6 +9,11 @@ export declare class DropTableBuilder implements OperationNodeSource, Compilable
9
9
  constructor(props: DropTableBuilderProps);
10
10
  ifExists(): DropTableBuilder;
11
11
  cascade(): DropTableBuilder;
12
+ /**
13
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
14
+ * what the provided function returns.
15
+ */
16
+ $call<T>(func: (qb: this) => T): T;
12
17
  toOperationNode(): DropTableNode;
13
18
  compile(): CompiledQuery;
14
19
  execute(): Promise<void>;
@@ -25,6 +25,13 @@ class DropTableBuilder {
25
25
  }),
26
26
  });
27
27
  }
28
+ /**
29
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
30
+ * what the provided function returns.
31
+ */
32
+ $call(func) {
33
+ return func(this);
34
+ }
28
35
  toOperationNode() {
29
36
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
30
37
  }
@@ -8,6 +8,11 @@ export declare class DropTypeBuilder implements OperationNodeSource, Compilable
8
8
  #private;
9
9
  constructor(props: DropTypeBuilderProps);
10
10
  ifExists(): DropTypeBuilder;
11
+ /**
12
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
13
+ * what the provided function returns.
14
+ */
15
+ $call<T>(func: (qb: this) => T): T;
11
16
  toOperationNode(): DropTypeNode;
12
17
  compile(): CompiledQuery;
13
18
  execute(): Promise<void>;
@@ -17,6 +17,13 @@ class DropTypeBuilder {
17
17
  }),
18
18
  });
19
19
  }
20
+ /**
21
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
22
+ * what the provided function returns.
23
+ */
24
+ $call(func) {
25
+ return func(this);
26
+ }
20
27
  toOperationNode() {
21
28
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
22
29
  }
@@ -10,6 +10,11 @@ export declare class DropViewBuilder implements OperationNodeSource, Compilable
10
10
  materialized(): DropViewBuilder;
11
11
  ifExists(): DropViewBuilder;
12
12
  cascade(): DropViewBuilder;
13
+ /**
14
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
15
+ * what the provided function returns.
16
+ */
17
+ $call<T>(func: (qb: this) => T): T;
13
18
  toOperationNode(): DropViewNode;
14
19
  compile(): CompiledQuery;
15
20
  execute(): Promise<void>;
@@ -33,6 +33,13 @@ class DropViewBuilder {
33
33
  }),
34
34
  });
35
35
  }
36
+ /**
37
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
38
+ * what the provided function returns.
39
+ */
40
+ $call(func) {
41
+ return func(this);
42
+ }
36
43
  toOperationNode() {
37
44
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
38
45
  }
@@ -10,5 +10,10 @@ export declare class ForeignKeyConstraintBuilder implements ForeignKeyConstraint
10
10
  constructor(node: ForeignKeyConstraintNode);
11
11
  onDelete(onDelete: OnModifyForeignAction): ForeignKeyConstraintBuilder;
12
12
  onUpdate(onUpdate: OnModifyForeignAction): ForeignKeyConstraintBuilder;
13
+ /**
14
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
15
+ * what the provided function returns.
16
+ */
17
+ $call<T>(func: (qb: this) => T): T;
13
18
  toOperationNode(): ForeignKeyConstraintNode;
14
19
  }
@@ -19,6 +19,13 @@ class ForeignKeyConstraintBuilder {
19
19
  onUpdate: (0, on_modify_action_parser_js_1.parseOnModifyForeignAction)(onUpdate),
20
20
  }));
21
21
  }
22
+ /**
23
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
24
+ * what the provided function returns.
25
+ */
26
+ $call(func) {
27
+ return func(this);
28
+ }
22
29
  toOperationNode() {
23
30
  return this.#node;
24
31
  }
@@ -2,3 +2,4 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
2
2
  export interface Compilable<O = unknown> {
3
3
  compile(): CompiledQuery<O>;
4
4
  }
5
+ export declare function isCompilable(value: unknown): value is Compilable;
@@ -1,2 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCompilable = void 0;
4
+ const object_utils_js_1 = require("./object-utils.js");
5
+ function isCompilable(value) {
6
+ return (0, object_utils_js_1.isObject)(value) && (0, object_utils_js_1.isFunction)(value.compile);
7
+ }
8
+ exports.isCompilable = isCompilable;
@@ -1,5 +1,40 @@
1
1
  import { Expression } from '../expression/expression.js';
2
2
  export declare type ExplainFormat = 'text' | 'xml' | 'json' | 'yaml' | 'traditional' | 'tree';
3
3
  export interface Explainable {
4
+ /**
5
+ * Executes query with `explain` statement before the main query.
6
+ *
7
+ * ```ts
8
+ * const explained = await db
9
+ * .selectFrom('person')
10
+ * .where('gender', '=', 'female')
11
+ * .selectAll()
12
+ * .explain('json')
13
+ * ```
14
+ *
15
+ * The generated SQL (MySQL):
16
+ *
17
+ * ```sql
18
+ * explain format=json select * from `person` where `gender` = ?
19
+ * ```
20
+ *
21
+ * You can also execute `explain analyze` statements.
22
+ *
23
+ * ```ts
24
+ * import { sql } from 'kysely'
25
+ *
26
+ * const explained = await db
27
+ * .selectFrom('person')
28
+ * .where('gender', '=', 'female')
29
+ * .selectAll()
30
+ * .explain('json', sql`analyze`)
31
+ * ```
32
+ *
33
+ * The generated SQL (PostgreSQL):
34
+ *
35
+ * ```sql
36
+ * explain (analyze, format json) select * from "person" where "gender" = $1
37
+ * ```
38
+ */
4
39
  explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<O[]>;
5
40
  }
@@ -10,6 +10,8 @@ export interface QueryLogEvent {
10
10
  export interface ErrorLogEvent {
11
11
  readonly level: 'error';
12
12
  readonly error: unknown;
13
+ readonly query: CompiledQuery;
14
+ readonly queryDurationMillis: number;
13
15
  }
14
16
  export declare type LogEvent = QueryLogEvent | ErrorLogEvent;
15
17
  export declare type Logger = (event: LogEvent) => void;
@@ -12,7 +12,7 @@ function isEmpty(obj) {
12
12
  }
13
13
  exports.isEmpty = isEmpty;
14
14
  function isUndefined(obj) {
15
- return obj === undefined;
15
+ return typeof obj === 'undefined' || obj === undefined;
16
16
  }
17
17
  exports.isUndefined = isUndefined;
18
18
  function isString(obj) {
@@ -0,0 +1,29 @@
1
+ export interface Streamable<O> {
2
+ /**
3
+ * Executes the query and streams the rows.
4
+ *
5
+ * The optional argument `chunkSize` defines how many rows to fetch from the database
6
+ * at a time. It only affects some dialects like PostgreSQL that support it.
7
+ *
8
+ * ### Examples
9
+ *
10
+ * ```ts
11
+ * const stream = db.
12
+ * .selectFrom('person')
13
+ * .select(['first_name', 'last_name'])
14
+ * .where('gender', '=', 'other')
15
+ * .stream()
16
+ *
17
+ * for await (const person of stream) {
18
+ * console.log(person.first_name)
19
+ *
20
+ * if (person.last_name === 'Something') {
21
+ * // Breaking or returning before the stream has ended will release
22
+ * // the database connection and invalidate the stream.
23
+ * break
24
+ * }
25
+ * }
26
+ * ```
27
+ */
28
+ stream(chunkSize?: number): AsyncIterableIterator<O>;
29
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -144,3 +144,4 @@ export declare type IsNever<T> = [T] extends [never] ? true : false;
144
144
  * Evaluates to `true` if the types `T` and `U` are equal.
145
145
  */
146
146
  export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
147
+ export declare type SqlBool = boolean | 0 | 1;
@@ -17,9 +17,9 @@ export class MysqlAdapter extends DialectAdapterBase {
17
17
  // is released using `release_lock`. This way we know that the lock is either
18
18
  // released by us after successfull or failed migrations OR it's released by
19
19
  // MySQL if the process gets killed for some reason.
20
- await sql `select get_lock(${sql.literal(LOCK_ID)}, ${sql.literal(LOCK_TIMEOUT_SECONDS)})`.execute(db);
20
+ await sql `select get_lock(${sql.lit(LOCK_ID)}, ${sql.lit(LOCK_TIMEOUT_SECONDS)})`.execute(db);
21
21
  }
22
22
  async releaseMigrationLock(db) {
23
- await sql `select release_lock(${sql.literal(LOCK_ID)})`.execute(db);
23
+ await sql `select release_lock(${sql.lit(LOCK_ID)})`.execute(db);
24
24
  }
25
25
  }
@@ -42,7 +42,7 @@ declare class MysqlConnection implements DatabaseConnection {
42
42
  #private;
43
43
  constructor(rawConnection: MysqlPoolConnection);
44
44
  executeQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>>;
45
- streamQuery<O>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
45
+ streamQuery<O>(compiledQuery: CompiledQuery, _chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
46
46
  [PRIVATE_RELEASE_METHOD](): void;
47
47
  }
48
48
  export {};
@@ -124,7 +124,7 @@ class MysqlConnection {
124
124
  });
125
125
  });
126
126
  }
127
- async *streamQuery(compiledQuery, chunkSize) {
127
+ async *streamQuery(compiledQuery, _chunkSize) {
128
128
  const stream = this.#rawConnection
129
129
  .query(compiledQuery.sql, compiledQuery.parameters)
130
130
  .stream({
@@ -12,7 +12,7 @@ export class PostgresAdapter extends DialectAdapterBase {
12
12
  }
13
13
  async acquireMigrationLock(db) {
14
14
  // Acquire a transaction level advisory lock.
15
- await sql `select pg_advisory_xact_lock(${sql.literal(LOCK_ID)})`.execute(db);
15
+ await sql `select pg_advisory_xact_lock(${sql.lit(LOCK_ID)})`.execute(db);
16
16
  }
17
17
  async releaseMigrationLock() {
18
18
  // Nothing to do here. `pg_advisory_xact_lock` is automatically released at the
@@ -27,6 +27,7 @@ import { SqliteDialectConfig } from './sqlite-dialect-config.js';
27
27
  * new SqliteDialect({
28
28
  * database: async () => new Database('db.sqlite')
29
29
  * })
30
+ * ```
30
31
  */
31
32
  export declare class SqliteDialect implements Dialect {
32
33
  #private;
@@ -26,6 +26,7 @@ import { freeze } from '../../util/object-utils.js';
26
26
  * new SqliteDialect({
27
27
  * database: async () => new Database('db.sqlite')
28
28
  * })
29
+ * ```
29
30
  */
30
31
  export class SqliteDialect {
31
32
  #config;
@@ -74,7 +74,7 @@ export class RuntimeDriver {
74
74
  return await executeQuery.call(connection, compiledQuery);
75
75
  }
76
76
  catch (error) {
77
- this.#logError(error);
77
+ this.#logError(error, compiledQuery, startTime);
78
78
  throw error;
79
79
  }
80
80
  finally {
@@ -82,10 +82,12 @@ export class RuntimeDriver {
82
82
  }
83
83
  };
84
84
  }
85
- #logError(error) {
85
+ #logError(error, compiledQuery, startTime) {
86
86
  this.#log.error(() => ({
87
87
  level: 'error',
88
88
  error,
89
+ query: compiledQuery,
90
+ queryDurationMillis: this.#calculateDurationMillis(startTime),
89
91
  }));
90
92
  }
91
93
  #logQuery(compiledQuery, startTime) {