kysely 0.24.2 → 0.26.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 (351) hide show
  1. package/README.md +31 -567
  2. package/dist/cjs/dialect/database-introspector.d.ts +1 -1
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
  5. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
  7. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  8. package/dist/cjs/driver/database-connection.d.ts +6 -0
  9. package/dist/cjs/driver/driver.d.ts +1 -1
  10. package/dist/cjs/driver/runtime-driver.js +6 -6
  11. package/dist/cjs/dynamic/dynamic.d.ts +1 -1
  12. package/dist/cjs/dynamic/dynamic.js +1 -1
  13. package/dist/cjs/expression/expression-builder.d.ts +263 -109
  14. package/dist/cjs/expression/expression-builder.js +38 -7
  15. package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
  16. package/dist/cjs/expression/expression-wrapper.js +70 -2
  17. package/dist/cjs/helpers/mysql.d.ts +3 -3
  18. package/dist/cjs/helpers/mysql.js +2 -2
  19. package/dist/cjs/helpers/postgres.d.ts +31 -19
  20. package/dist/cjs/helpers/postgres.js +30 -18
  21. package/dist/cjs/index.d.ts +10 -0
  22. package/dist/cjs/index.js +10 -0
  23. package/dist/cjs/kysely.d.ts +42 -15
  24. package/dist/cjs/kysely.js +41 -10
  25. package/dist/cjs/migration/file-migration-provider.js +2 -2
  26. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -7
  27. package/dist/cjs/operation-node/aggregate-function-node.js +1 -1
  28. package/dist/cjs/operation-node/alter-column-node.d.ts +3 -5
  29. package/dist/cjs/operation-node/alter-column-node.js +2 -7
  30. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/alter-table-node.js +1 -2
  32. package/dist/cjs/operation-node/case-node.d.ts +19 -0
  33. package/dist/cjs/operation-node/case-node.js +42 -0
  34. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  36. package/dist/cjs/operation-node/create-index-node.d.ts +4 -3
  37. package/dist/cjs/operation-node/create-index-node.js +6 -0
  38. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
  40. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  43. package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
  44. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
  45. package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
  47. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  48. package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
  50. package/dist/cjs/operation-node/generated-node.d.ts +1 -1
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/join-node.d.ts +1 -2
  53. package/dist/cjs/operation-node/join-node.js +0 -8
  54. package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
  55. package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
  56. package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
  57. package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
  58. package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
  59. package/dist/cjs/operation-node/json-path-node.js +25 -0
  60. package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
  61. package/dist/cjs/operation-node/json-reference-node.js +25 -0
  62. package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
  63. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
  64. package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
  65. package/dist/cjs/operation-node/operation-node-transformer.js +53 -3
  66. package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
  67. package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
  68. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  69. package/dist/cjs/operation-node/operator-node.d.ts +13 -9
  70. package/dist/cjs/operation-node/operator-node.js +12 -2
  71. package/dist/cjs/operation-node/query-node.d.ts +9 -10
  72. package/dist/cjs/operation-node/query-node.js +0 -8
  73. package/dist/cjs/operation-node/reference-node.d.ts +2 -2
  74. package/dist/cjs/operation-node/reference-node.js +1 -1
  75. package/dist/cjs/operation-node/references-node.d.ts +1 -1
  76. package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
  77. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  78. package/dist/cjs/operation-node/select-query-node.js +0 -8
  79. package/dist/cjs/operation-node/selection-node.d.ts +1 -1
  80. package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
  81. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
  82. package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
  83. package/dist/cjs/operation-node/values-node.d.ts +1 -1
  84. package/dist/cjs/operation-node/when-node.d.ts +14 -0
  85. package/dist/cjs/operation-node/when-node.js +24 -0
  86. package/dist/cjs/operation-node/with-node.d.ts +1 -1
  87. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -11
  88. package/dist/cjs/parser/binary-operation-parser.js +40 -103
  89. package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
  90. package/dist/cjs/parser/data-type-parser.d.ts +1 -1
  91. package/dist/cjs/parser/default-value-parser.d.ts +1 -1
  92. package/dist/cjs/parser/expression-parser.d.ts +6 -5
  93. package/dist/cjs/parser/group-by-parser.d.ts +2 -2
  94. package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
  95. package/dist/cjs/parser/join-parser.d.ts +4 -4
  96. package/dist/cjs/parser/order-by-parser.d.ts +4 -3
  97. package/dist/cjs/parser/order-by-parser.js +5 -1
  98. package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
  99. package/dist/cjs/parser/reference-parser.d.ts +16 -8
  100. package/dist/cjs/parser/reference-parser.js +43 -16
  101. package/dist/cjs/parser/returning-parser.d.ts +2 -2
  102. package/dist/cjs/parser/select-parser.d.ts +9 -9
  103. package/dist/cjs/parser/table-parser.d.ts +14 -13
  104. package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
  105. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  106. package/dist/cjs/parser/update-set-parser.js +1 -3
  107. package/dist/cjs/parser/value-parser.d.ts +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +14 -9
  109. package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
  110. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  111. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
  112. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
  113. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
  114. package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
  115. package/dist/cjs/query-builder/case-builder.d.ts +111 -0
  116. package/dist/cjs/query-builder/case-builder.js +75 -0
  117. package/dist/cjs/query-builder/delete-query-builder.d.ts +130 -63
  118. package/dist/cjs/query-builder/delete-query-builder.js +42 -59
  119. package/dist/cjs/query-builder/delete-result.d.ts +1 -2
  120. package/dist/cjs/query-builder/delete-result.js +2 -8
  121. package/dist/cjs/query-builder/function-module.d.ts +78 -69
  122. package/dist/cjs/query-builder/function-module.js +12 -16
  123. package/dist/cjs/query-builder/having-interface.d.ts +2 -35
  124. package/dist/cjs/query-builder/insert-query-builder.d.ts +99 -47
  125. package/dist/cjs/query-builder/insert-query-builder.js +57 -26
  126. package/dist/cjs/query-builder/insert-result.d.ts +3 -4
  127. package/dist/cjs/query-builder/insert-result.js +5 -14
  128. package/dist/cjs/query-builder/join-builder.d.ts +2 -35
  129. package/dist/cjs/query-builder/join-builder.js +1 -56
  130. package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
  131. package/dist/cjs/query-builder/json-path-builder.js +191 -0
  132. package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
  133. package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
  134. package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
  135. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  136. package/dist/cjs/query-builder/over-builder.js +1 -1
  137. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  138. package/dist/cjs/query-builder/select-query-builder.d.ts +184 -138
  139. package/dist/cjs/query-builder/select-query-builder.js +64 -130
  140. package/dist/cjs/query-builder/update-query-builder.d.ts +143 -71
  141. package/dist/cjs/query-builder/update-query-builder.js +47 -60
  142. package/dist/cjs/query-builder/update-result.d.ts +3 -3
  143. package/dist/cjs/query-builder/update-result.js +5 -9
  144. package/dist/cjs/query-builder/where-interface.d.ts +73 -38
  145. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  146. package/dist/cjs/query-compiler/compiled-query.js +2 -2
  147. package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
  148. package/dist/cjs/query-compiler/default-query-compiler.js +67 -5
  149. package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
  150. package/dist/cjs/query-creator.d.ts +4 -2
  151. package/dist/cjs/schema/alter-column-builder.d.ts +13 -7
  152. package/dist/cjs/schema/alter-column-builder.js +20 -22
  153. package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
  154. package/dist/cjs/schema/alter-table-builder.js +2 -9
  155. package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
  156. package/dist/cjs/schema/column-definition-builder.js +1 -2
  157. package/dist/cjs/schema/create-index-builder.d.ts +49 -7
  158. package/dist/cjs/schema/create-index-builder.js +52 -14
  159. package/dist/cjs/schema/create-table-builder.d.ts +2 -6
  160. package/dist/cjs/schema/create-table-builder.js +0 -6
  161. package/dist/cjs/schema/schema.d.ts +1 -2
  162. package/dist/cjs/schema/schema.js +2 -3
  163. package/dist/cjs/util/column-type.d.ts +21 -16
  164. package/dist/cjs/util/explainable.d.ts +1 -1
  165. package/dist/cjs/util/infer-result.d.ts +2 -2
  166. package/dist/cjs/util/log.d.ts +6 -6
  167. package/dist/cjs/util/log.js +4 -4
  168. package/dist/cjs/util/object-utils.d.ts +2 -1
  169. package/dist/cjs/util/require-all-props.d.ts +1 -1
  170. package/dist/cjs/util/type-utils.d.ts +54 -40
  171. package/dist/esm/dialect/database-introspector.d.ts +1 -1
  172. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  173. package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
  174. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  175. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
  176. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  177. package/dist/esm/driver/database-connection.d.ts +6 -0
  178. package/dist/esm/driver/driver.d.ts +1 -1
  179. package/dist/esm/driver/runtime-driver.js +6 -6
  180. package/dist/esm/dynamic/dynamic.d.ts +1 -1
  181. package/dist/esm/dynamic/dynamic.js +1 -1
  182. package/dist/esm/expression/expression-builder.d.ts +263 -109
  183. package/dist/esm/expression/expression-builder.js +40 -9
  184. package/dist/esm/expression/expression-wrapper.d.ts +296 -5
  185. package/dist/esm/expression/expression-wrapper.js +67 -1
  186. package/dist/esm/helpers/mysql.d.ts +3 -3
  187. package/dist/esm/helpers/mysql.js +2 -2
  188. package/dist/esm/helpers/postgres.d.ts +31 -19
  189. package/dist/esm/helpers/postgres.js +30 -18
  190. package/dist/esm/index.d.ts +10 -0
  191. package/dist/esm/index.js +10 -0
  192. package/dist/esm/kysely.d.ts +42 -15
  193. package/dist/esm/kysely.js +42 -11
  194. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -7
  195. package/dist/esm/operation-node/aggregate-function-node.js +1 -1
  196. package/dist/esm/operation-node/alter-column-node.d.ts +3 -5
  197. package/dist/esm/operation-node/alter-column-node.js +2 -7
  198. package/dist/esm/operation-node/alter-table-node.d.ts +3 -3
  199. package/dist/esm/operation-node/alter-table-node.js +1 -2
  200. package/dist/esm/operation-node/case-node.d.ts +19 -0
  201. package/dist/esm/operation-node/case-node.js +40 -0
  202. package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
  203. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  204. package/dist/esm/operation-node/create-index-node.d.ts +4 -3
  205. package/dist/esm/operation-node/create-index-node.js +6 -0
  206. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  207. package/dist/esm/operation-node/create-table-node.d.ts +2 -2
  208. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  209. package/dist/esm/operation-node/create-view-node.d.ts +1 -1
  210. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  211. package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
  212. package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
  213. package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
  214. package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
  215. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  216. package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
  217. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
  218. package/dist/esm/operation-node/generated-node.d.ts +1 -1
  219. package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
  220. package/dist/esm/operation-node/join-node.d.ts +1 -2
  221. package/dist/esm/operation-node/join-node.js +0 -8
  222. package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
  223. package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
  224. package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
  225. package/dist/esm/operation-node/json-path-leg-node.js +17 -0
  226. package/dist/esm/operation-node/json-path-node.d.ts +16 -0
  227. package/dist/esm/operation-node/json-path-node.js +23 -0
  228. package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
  229. package/dist/esm/operation-node/json-reference-node.js +23 -0
  230. package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
  231. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
  232. package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
  233. package/dist/esm/operation-node/operation-node-transformer.js +53 -3
  234. package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
  235. package/dist/esm/operation-node/operation-node-visitor.js +6 -0
  236. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  237. package/dist/esm/operation-node/operator-node.d.ts +13 -9
  238. package/dist/esm/operation-node/operator-node.js +10 -1
  239. package/dist/esm/operation-node/query-node.d.ts +9 -10
  240. package/dist/esm/operation-node/query-node.js +0 -8
  241. package/dist/esm/operation-node/reference-node.d.ts +2 -2
  242. package/dist/esm/operation-node/reference-node.js +1 -1
  243. package/dist/esm/operation-node/references-node.d.ts +1 -1
  244. package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
  245. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  246. package/dist/esm/operation-node/select-query-node.js +0 -8
  247. package/dist/esm/operation-node/selection-node.d.ts +1 -1
  248. package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
  249. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
  250. package/dist/esm/operation-node/update-query-node.d.ts +1 -1
  251. package/dist/esm/operation-node/values-node.d.ts +1 -1
  252. package/dist/esm/operation-node/when-node.d.ts +14 -0
  253. package/dist/esm/operation-node/when-node.js +22 -0
  254. package/dist/esm/operation-node/with-node.d.ts +1 -1
  255. package/dist/esm/parser/binary-operation-parser.d.ts +9 -11
  256. package/dist/esm/parser/binary-operation-parser.js +38 -99
  257. package/dist/esm/parser/coalesce-parser.d.ts +1 -1
  258. package/dist/esm/parser/data-type-parser.d.ts +1 -1
  259. package/dist/esm/parser/default-value-parser.d.ts +1 -1
  260. package/dist/esm/parser/expression-parser.d.ts +6 -5
  261. package/dist/esm/parser/group-by-parser.d.ts +2 -2
  262. package/dist/esm/parser/insert-values-parser.d.ts +4 -4
  263. package/dist/esm/parser/join-parser.d.ts +4 -4
  264. package/dist/esm/parser/order-by-parser.d.ts +4 -3
  265. package/dist/esm/parser/order-by-parser.js +3 -0
  266. package/dist/esm/parser/partition-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +16 -8
  268. package/dist/esm/parser/reference-parser.js +40 -15
  269. package/dist/esm/parser/returning-parser.d.ts +2 -2
  270. package/dist/esm/parser/select-parser.d.ts +9 -9
  271. package/dist/esm/parser/table-parser.d.ts +14 -13
  272. package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
  273. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  274. package/dist/esm/parser/update-set-parser.js +2 -4
  275. package/dist/esm/parser/value-parser.d.ts +4 -4
  276. package/dist/esm/parser/with-parser.d.ts +14 -9
  277. package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
  278. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  279. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
  280. package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
  282. package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
  283. package/dist/esm/query-builder/case-builder.d.ts +111 -0
  284. package/dist/esm/query-builder/case-builder.js +69 -0
  285. package/dist/esm/query-builder/delete-query-builder.d.ts +130 -63
  286. package/dist/esm/query-builder/delete-query-builder.js +43 -60
  287. package/dist/esm/query-builder/delete-result.d.ts +1 -2
  288. package/dist/esm/query-builder/delete-result.js +2 -8
  289. package/dist/esm/query-builder/function-module.d.ts +78 -69
  290. package/dist/esm/query-builder/function-module.js +13 -17
  291. package/dist/esm/query-builder/having-interface.d.ts +2 -35
  292. package/dist/esm/query-builder/insert-query-builder.d.ts +99 -47
  293. package/dist/esm/query-builder/insert-query-builder.js +57 -26
  294. package/dist/esm/query-builder/insert-result.d.ts +3 -4
  295. package/dist/esm/query-builder/insert-result.js +5 -14
  296. package/dist/esm/query-builder/join-builder.d.ts +2 -35
  297. package/dist/esm/query-builder/join-builder.js +2 -57
  298. package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
  299. package/dist/esm/query-builder/json-path-builder.js +186 -0
  300. package/dist/esm/query-builder/no-result-error.d.ts +1 -1
  301. package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
  302. package/dist/esm/query-builder/on-conflict-builder.js +3 -112
  303. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  304. package/dist/esm/query-builder/over-builder.js +1 -1
  305. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  306. package/dist/esm/query-builder/select-query-builder.d.ts +184 -138
  307. package/dist/esm/query-builder/select-query-builder.js +65 -131
  308. package/dist/esm/query-builder/update-query-builder.d.ts +143 -71
  309. package/dist/esm/query-builder/update-query-builder.js +48 -61
  310. package/dist/esm/query-builder/update-result.d.ts +3 -3
  311. package/dist/esm/query-builder/update-result.js +5 -9
  312. package/dist/esm/query-builder/where-interface.d.ts +73 -38
  313. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  314. package/dist/esm/query-compiler/compiled-query.js +2 -2
  315. package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
  316. package/dist/esm/query-compiler/default-query-compiler.js +67 -5
  317. package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
  318. package/dist/esm/query-creator.d.ts +4 -2
  319. package/dist/esm/schema/alter-column-builder.d.ts +13 -7
  320. package/dist/esm/schema/alter-column-builder.js +20 -22
  321. package/dist/esm/schema/alter-table-builder.d.ts +0 -4
  322. package/dist/esm/schema/alter-table-builder.js +2 -9
  323. package/dist/esm/schema/column-definition-builder.d.ts +1 -1
  324. package/dist/esm/schema/column-definition-builder.js +1 -2
  325. package/dist/esm/schema/create-index-builder.d.ts +49 -7
  326. package/dist/esm/schema/create-index-builder.js +54 -16
  327. package/dist/esm/schema/create-table-builder.d.ts +2 -6
  328. package/dist/esm/schema/create-table-builder.js +0 -6
  329. package/dist/esm/schema/schema.d.ts +1 -2
  330. package/dist/esm/schema/schema.js +2 -3
  331. package/dist/esm/util/column-type.d.ts +21 -16
  332. package/dist/esm/util/explainable.d.ts +1 -1
  333. package/dist/esm/util/infer-result.d.ts +2 -2
  334. package/dist/esm/util/log.d.ts +6 -6
  335. package/dist/esm/util/log.js +4 -4
  336. package/dist/esm/util/object-utils.d.ts +2 -1
  337. package/dist/esm/util/require-all-props.d.ts +1 -1
  338. package/dist/esm/util/type-utils.d.ts +54 -40
  339. package/package.json +25 -23
  340. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  341. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
  342. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  343. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
  344. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  345. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
  346. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  347. package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
  348. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  349. package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
  350. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  351. package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
@@ -1,9 +1,8 @@
1
1
  import { Expression } from '../expression/expression.js';
2
2
  import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
3
3
  import { ReferenceExpression } from '../parser/reference-parser.js';
4
- import { ExistsExpression } from '../parser/unary-operation-parser.js';
5
4
  import { SqlBool } from '../util/type-utils.js';
6
- import { WhereExpressionBuilder } from './deprecated-where-expression-builder.js';
5
+ import { ExpressionBuilder } from '../expression/expression-builder.js';
7
6
  export interface WhereInterface<DB, TB extends keyof DB> {
8
7
  /**
9
8
  * Adds a `where` expression to the query.
@@ -14,6 +13,10 @@ export interface WhereInterface<DB, TB extends keyof DB> {
14
13
  *
15
14
  * ### Examples
16
15
  *
16
+ * <!-- siteExample("where", "Simple where clause", 10) -->
17
+ *
18
+ * `where` method calls are combined with `AND`:
19
+ *
17
20
  * ```ts
18
21
  * const person = await db
19
22
  * .selectFrom('person')
@@ -36,9 +39,65 @@ export interface WhereInterface<DB, TB extends keyof DB> {
36
39
  * sql`your operator`
37
40
  * ```
38
41
  *
42
+ * <!-- siteExample("where", "Where in", 20) -->
43
+ *
44
+ * Find multiple items using a list of identifiers:
45
+ *
46
+ * ```ts
47
+ * const persons = await db
48
+ * .selectFrom('person')
49
+ * .selectAll()
50
+ * .where('id', 'in', ['1', '2', '3'])
51
+ * .execute()
52
+ * ```
53
+ *
54
+ * The generated SQL (PostgreSQL):
55
+ *
56
+ * ```sql
57
+ * select * from "person" where "id" in ($1, $2, $3)
58
+ * ```
59
+ *
60
+ * <!-- siteExample("where", "OR where", 30) -->
61
+ *
62
+ * To combine conditions using `OR`, you can use the expression builder:
63
+ *
64
+ * ```ts
65
+ * const persons = await db
66
+ * .selectFrom('person')
67
+ * .selectAll()
68
+ * .where(({ or, and, cmpr }) => or([
69
+ * and([
70
+ * cmpr('first_name', '=', 'Jennifer'),
71
+ * cmpr('last_name', '=', 'Aniston')
72
+ * ]),
73
+ * and([
74
+ * cmpr('first_name', '=', 'Sylvester'),
75
+ * cmpr('last_name', '=', 'Stallone')
76
+ * ])
77
+ * ]))
78
+ * .execute()
79
+ * ```
80
+ *
81
+ * The generated SQL (PostgreSQL):
82
+ *
83
+ * ```sql
84
+ * select *
85
+ * from "person"
86
+ * where (
87
+ * ("first_name" = $1 AND "last_name" = $2)
88
+ * OR
89
+ * ("first_name" = $3 AND "last_name" = $4)
90
+ * )
91
+ * ```
92
+ *
93
+ * <!-- siteExample("where", "Conditional where calls", 40) -->
94
+ *
39
95
  * You can add expressions conditionally like this:
40
96
  *
41
97
  * ```ts
98
+ * const firstName: string | undefined = 'Jennifer'
99
+ * const lastName: string | undefined = 'Aniston'
100
+ *
42
101
  * let query = db
43
102
  * .selectFrom('person')
44
103
  * .selectAll()
@@ -105,22 +164,30 @@ export interface WhereInterface<DB, TB extends keyof DB> {
105
164
  * select * from "person" where "id" in ($1, $2, $3)
106
165
  * ```
107
166
  *
167
+ * <!-- siteExample("where", "Complex where clause", 50) -->
168
+ *
108
169
  * For complex `where` expressions you can pass in a single callback and
109
- * use the {@link ExpressionBuilder} to build your expression:
170
+ * use the `ExpressionBuilder` to build your expression:
110
171
  *
111
172
  * ```ts
173
+ * const firstName = 'Jennifer'
174
+ * const maxAge = 60
175
+ *
112
176
  * const persons = await db
113
177
  * .selectFrom('person')
114
178
  * .selectAll('person')
115
- * .where(({ cmpr, or, and, not, exists, selectFrom, val }) => and([
179
+ * .where(({ cmpr, or, and, not, exists, selectFrom }) => and([
116
180
  * or([
117
181
  * cmpr('first_name', '=', firstName),
118
182
  * cmpr('age', '<', maxAge)
119
183
  * ]),
120
184
  * not(exists(
121
- * selectFrom('pet').select('pet.id').whereRef('pet.owner_id', '=', 'person.id')
185
+ * selectFrom('pet')
186
+ * .select('pet.id')
187
+ * .whereRef('pet.owner_id', '=', 'person.id')
122
188
  * ))
123
189
  * ]))
190
+ * .execute()
124
191
  * ```
125
192
  *
126
193
  * The generated SQL (PostgreSQL):
@@ -241,38 +308,6 @@ export interface WhereInterface<DB, TB extends keyof DB> {
241
308
  * from "person"
242
309
  */
243
310
  whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
244
- /**
245
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
246
- */
247
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
248
- /**
249
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
250
- */
251
- orWhere(factory: WhereExpressionFactory<DB, TB>): WhereInterface<DB, TB>;
252
- /**
253
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
254
- */
255
- orWhere(expression: Expression<any>): WhereInterface<DB, TB>;
256
- /**
257
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
258
- */
259
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
260
- /**
261
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
262
- */
263
- whereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
264
- /**
265
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
266
- */
267
- whereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
268
- /**
269
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
270
- */
271
- orWhereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
272
- /**
273
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
274
- */
275
- orWhereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
276
311
  /**
277
312
  * Clears all where expressions from the query.
278
313
  *
@@ -293,4 +328,4 @@ export interface WhereInterface<DB, TB extends keyof DB> {
293
328
  */
294
329
  clearWhere(): WhereInterface<DB, TB>;
295
330
  }
296
- export declare type WhereExpressionFactory<DB, TB extends keyof DB> = (eb: WhereExpressionBuilder<DB, TB>) => Expression<SqlBool> | WhereExpressionBuilder<DB, TB>;
331
+ export type WhereExpressionFactory<DB, TB extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => Expression<SqlBool>;
@@ -5,5 +5,5 @@ export interface CompiledQuery<O = unknown> {
5
5
  readonly parameters: ReadonlyArray<unknown>;
6
6
  }
7
7
  export declare const CompiledQuery: Readonly<{
8
- raw(sql: string): CompiledQuery;
8
+ raw(sql: string, parameters?: unknown[]): CompiledQuery;
9
9
  }>;
@@ -4,11 +4,11 @@ exports.CompiledQuery = void 0;
4
4
  const raw_node_js_1 = require("../operation-node/raw-node.js");
5
5
  const object_utils_js_1 = require("../util/object-utils.js");
6
6
  exports.CompiledQuery = (0, object_utils_js_1.freeze)({
7
- raw(sql) {
7
+ raw(sql, parameters = []) {
8
8
  return (0, object_utils_js_1.freeze)({
9
9
  sql,
10
10
  query: raw_node_js_1.RawNode.createWithSql(sql),
11
- parameters: (0, object_utils_js_1.freeze)([]),
11
+ parameters: (0, object_utils_js_1.freeze)(parameters),
12
12
  });
13
13
  },
14
14
  });
@@ -81,6 +81,12 @@ import { BinaryOperationNode } from '../operation-node/binary-operation-node.js'
81
81
  import { UnaryOperationNode } from '../operation-node/unary-operation-node.js';
82
82
  import { UsingNode } from '../operation-node/using-node.js';
83
83
  import { FunctionNode } from '../operation-node/function-node.js';
84
+ import { CaseNode } from '../operation-node/case-node.js';
85
+ import { WhenNode } from '../operation-node/when-node.js';
86
+ import { JSONReferenceNode } from '../operation-node/json-reference-node.js';
87
+ import { JSONPathNode } from '../operation-node/json-path-node.js';
88
+ import { JSONPathLegNode } from '../operation-node/json-path-leg-node.js';
89
+ import { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';
84
90
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
85
91
  #private;
86
92
  protected get numParameters(): number;
@@ -170,6 +176,12 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
170
176
  protected isMinusOperator(node: OperationNode): node is OperatorNode;
171
177
  protected visitUsing(node: UsingNode): void;
172
178
  protected visitFunction(node: FunctionNode): void;
179
+ protected visitCase(node: CaseNode): void;
180
+ protected visitWhen(node: WhenNode): void;
181
+ protected visitJSONReference(node: JSONReferenceNode): void;
182
+ protected visitJSONPath(node: JSONPathNode): void;
183
+ protected visitJSONPathLeg(node: JSONPathLegNode): void;
184
+ protected visitJSONOperatorChain(node: JSONOperatorChainNode): void;
173
185
  protected append(str: string): void;
174
186
  protected appendValue(parameter: unknown): void;
175
187
  protected getLeftIdentifierWrapper(): string;
@@ -230,8 +230,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
230
230
  this.visitNode(node.alias);
231
231
  }
232
232
  visitReference(node) {
233
- this.visitNode(node.table);
234
- this.append('.');
233
+ if (node.table) {
234
+ this.visitNode(node.table);
235
+ this.append('.');
236
+ }
235
237
  this.visitNode(node.column);
236
238
  }
237
239
  visitSelectAll(_) {
@@ -548,9 +550,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
548
550
  this.append(' using ');
549
551
  this.visitNode(node.using);
550
552
  }
551
- if (node.expression) {
553
+ if (node.columns) {
552
554
  this.append(' (');
553
- this.visitNode(node.expression);
555
+ this.compileList(node.columns);
554
556
  this.append(')');
555
557
  }
556
558
  if (node.where) {
@@ -869,7 +871,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
869
871
  if (node.distinct) {
870
872
  this.append('distinct ');
871
873
  }
872
- this.visitNode(node.aggregated);
874
+ this.compileList(node.aggregated);
873
875
  this.append(')');
874
876
  if (node.filter) {
875
877
  this.append(' filter(');
@@ -928,6 +930,66 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
928
930
  this.compileList(node.arguments);
929
931
  this.append(')');
930
932
  }
933
+ visitCase(node) {
934
+ this.append('case');
935
+ if (node.value) {
936
+ this.append(' ');
937
+ this.visitNode(node.value);
938
+ }
939
+ if (node.when) {
940
+ this.append(' ');
941
+ this.compileList(node.when, ' ');
942
+ }
943
+ if (node.else) {
944
+ this.append(' else ');
945
+ this.visitNode(node.else);
946
+ }
947
+ this.append(' end');
948
+ if (node.isStatement) {
949
+ this.append(' case');
950
+ }
951
+ }
952
+ visitWhen(node) {
953
+ this.append('when ');
954
+ this.visitNode(node.condition);
955
+ if (node.result) {
956
+ this.append(' then ');
957
+ this.visitNode(node.result);
958
+ }
959
+ }
960
+ visitJSONReference(node) {
961
+ this.visitNode(node.reference);
962
+ this.visitNode(node.traversal);
963
+ }
964
+ visitJSONPath(node) {
965
+ if (node.inOperator) {
966
+ this.visitNode(node.inOperator);
967
+ }
968
+ this.append("'$");
969
+ for (const pathLeg of node.pathLegs) {
970
+ this.visitNode(pathLeg);
971
+ }
972
+ this.append("'");
973
+ }
974
+ visitJSONPathLeg(node) {
975
+ const isArrayLocation = node.type === 'ArrayLocation';
976
+ this.append(isArrayLocation ? '[' : '.');
977
+ this.append(String(node.value));
978
+ if (isArrayLocation) {
979
+ this.append(']');
980
+ }
981
+ }
982
+ visitJSONOperatorChain(node) {
983
+ for (let i = 0, len = node.values.length; i < len; i++) {
984
+ if (i === len - 1) {
985
+ this.visitNode(node.operator);
986
+ }
987
+ else {
988
+ this.append('->');
989
+ }
990
+ this.visitNode(node.values[i]);
991
+ }
992
+ }
931
993
  append(str) {
932
994
  this.#sql += str;
933
995
  }
@@ -12,7 +12,7 @@ import { DropViewNode } from '../operation-node/drop-view-node.js';
12
12
  import { QueryNode } from '../operation-node/query-node.js';
13
13
  import { RawNode } from '../operation-node/raw-node.js';
14
14
  import { CompiledQuery } from './compiled-query.js';
15
- export declare type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode;
15
+ export type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode;
16
16
  /**
17
17
  * a `QueryCompiler` compiles a query expressed as a tree of `OperationNodes` into SQL.
18
18
  */
@@ -201,12 +201,14 @@ export declare class QueryCreator<DB> {
201
201
  *
202
202
  * ### Examples
203
203
  *
204
- * Deleting person with id 1:
204
+ * <!-- siteExample("delete", "Single row", 10) -->
205
+ *
206
+ * Delete a single row:
205
207
  *
206
208
  * ```ts
207
209
  * const result = await db
208
210
  * .deleteFrom('person')
209
- * .where('person.id', '=', 1)
211
+ * .where('person.id', '=', '1')
210
212
  * .executeTakeFirst()
211
213
  *
212
214
  * console.log(result.numDeletedRows)
@@ -1,11 +1,11 @@
1
1
  import { AlterColumnNode } from '../operation-node/alter-column-node.js';
2
- import { ColumnDataType } from '../operation-node/data-type-node.js';
3
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ import { DataTypeExpression } from '../parser/data-type-parser.js';
4
4
  import { DefaultValueExpression } from '../parser/default-value-parser.js';
5
5
  export declare class AlterColumnBuilder {
6
- protected readonly alterColumnNode: AlterColumnNode;
7
- constructor(alterColumnNode: AlterColumnNode);
8
- setDataType(dataType: ColumnDataType): AlteredColumnBuilder;
6
+ #private;
7
+ constructor(column: string);
8
+ setDataType(dataType: DataTypeExpression): AlteredColumnBuilder;
9
9
  setDefault(value: DefaultValueExpression): AlteredColumnBuilder;
10
10
  dropDefault(): AlteredColumnBuilder;
11
11
  setNotNull(): AlteredColumnBuilder;
@@ -17,7 +17,7 @@ export declare class AlterColumnBuilder {
17
17
  $call<T>(func: (qb: this) => T): T;
18
18
  }
19
19
  /**
20
- * Allows us to force consumers to do something, anything, when altering a column.
20
+ * Allows us to force consumers to do exactly one alteration to a column.
21
21
  *
22
22
  * Basically, deny the following:
23
23
  *
@@ -25,9 +25,15 @@ export declare class AlterColumnBuilder {
25
25
  * db.schema.alterTable('person').alterColumn('age', (ac) => ac)
26
26
  * ```
27
27
  *
28
+ * ```ts
29
+ * db.schema.alterTable('person').alterColumn('age', (ac) => ac.dropNotNull().setNotNull())
30
+ * ```
31
+ *
28
32
  * Which would now throw a compilation error, instead of a runtime error.
29
33
  */
30
- export declare class AlteredColumnBuilder extends AlterColumnBuilder implements OperationNodeSource {
34
+ export declare class AlteredColumnBuilder implements OperationNodeSource {
35
+ #private;
36
+ constructor(alterColumnNode: AlterColumnNode);
31
37
  toOperationNode(): AlterColumnNode;
32
38
  }
33
- export declare type AlterColumnBuilderCallback = (builder: AlterColumnBuilder) => AlteredColumnBuilder;
39
+ export type AlterColumnBuilderCallback = (builder: AlterColumnBuilder) => AlteredColumnBuilder;
@@ -2,37 +2,27 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AlteredColumnBuilder = exports.AlterColumnBuilder = void 0;
4
4
  const alter_column_node_js_1 = require("../operation-node/alter-column-node.js");
5
- const data_type_node_js_1 = require("../operation-node/data-type-node.js");
5
+ const data_type_parser_js_1 = require("../parser/data-type-parser.js");
6
6
  const default_value_parser_js_1 = require("../parser/default-value-parser.js");
7
7
  class AlterColumnBuilder {
8
- alterColumnNode;
9
- constructor(alterColumnNode) {
10
- this.alterColumnNode = alterColumnNode;
8
+ #column;
9
+ constructor(column) {
10
+ this.#column = column;
11
11
  }
12
12
  setDataType(dataType) {
13
- return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.cloneWith(this.alterColumnNode, {
14
- dataType: data_type_node_js_1.DataTypeNode.create(dataType),
15
- }));
13
+ return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.create(this.#column, 'dataType', (0, data_type_parser_js_1.parseDataTypeExpression)(dataType)));
16
14
  }
17
15
  setDefault(value) {
18
- return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.cloneWith(this.alterColumnNode, {
19
- setDefault: (0, default_value_parser_js_1.parseDefaultValueExpression)(value),
20
- }));
16
+ return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.create(this.#column, 'setDefault', (0, default_value_parser_js_1.parseDefaultValueExpression)(value)));
21
17
  }
22
18
  dropDefault() {
23
- return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.cloneWith(this.alterColumnNode, {
24
- dropDefault: true,
25
- }));
19
+ return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.create(this.#column, 'dropDefault', true));
26
20
  }
27
21
  setNotNull() {
28
- return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.cloneWith(this.alterColumnNode, {
29
- setNotNull: true,
30
- }));
22
+ return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.create(this.#column, 'setNotNull', true));
31
23
  }
32
24
  dropNotNull() {
33
- return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.cloneWith(this.alterColumnNode, {
34
- dropNotNull: true,
35
- }));
25
+ return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.create(this.#column, 'dropNotNull', true));
36
26
  }
37
27
  /**
38
28
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
@@ -44,7 +34,7 @@ class AlterColumnBuilder {
44
34
  }
45
35
  exports.AlterColumnBuilder = AlterColumnBuilder;
46
36
  /**
47
- * Allows us to force consumers to do something, anything, when altering a column.
37
+ * Allows us to force consumers to do exactly one alteration to a column.
48
38
  *
49
39
  * Basically, deny the following:
50
40
  *
@@ -52,11 +42,19 @@ exports.AlterColumnBuilder = AlterColumnBuilder;
52
42
  * db.schema.alterTable('person').alterColumn('age', (ac) => ac)
53
43
  * ```
54
44
  *
45
+ * ```ts
46
+ * db.schema.alterTable('person').alterColumn('age', (ac) => ac.dropNotNull().setNotNull())
47
+ * ```
48
+ *
55
49
  * Which would now throw a compilation error, instead of a runtime error.
56
50
  */
57
- class AlteredColumnBuilder extends AlterColumnBuilder {
51
+ class AlteredColumnBuilder {
52
+ #alterColumnNode;
53
+ constructor(alterColumnNode) {
54
+ this.#alterColumnNode = alterColumnNode;
55
+ }
58
56
  toOperationNode() {
59
- return this.alterColumnNode;
57
+ return this.#alterColumnNode;
60
58
  }
61
59
  }
62
60
  exports.AlteredColumnBuilder = AlteredColumnBuilder;
@@ -55,10 +55,6 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
55
55
  * See {@link CreateTableBuilder.$call}
56
56
  */
57
57
  $call<T>(func: (qb: this) => T): T;
58
- /**
59
- * @deprecated Use `$call` instead
60
- */
61
- call<T>(func: (qb: this) => T): T;
62
58
  }
63
59
  export interface AlterTableBuilderProps {
64
60
  readonly queryId: QueryId;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AlterTableColumnAlteringBuilder = exports.AlterTableBuilder = void 0;
4
4
  const add_column_node_js_1 = require("../operation-node/add-column-node.js");
5
- const alter_column_node_js_1 = require("../operation-node/alter-column-node.js");
6
5
  const alter_table_node_js_1 = require("../operation-node/alter-table-node.js");
7
6
  const column_definition_node_js_1 = require("../operation-node/column-definition-node.js");
8
7
  const drop_column_node_js_1 = require("../operation-node/drop-column-node.js");
@@ -50,7 +49,7 @@ class AlterTableBuilder {
50
49
  });
51
50
  }
52
51
  alterColumn(column, alteration) {
53
- const builder = alteration(new alter_column_builder_js_1.AlterColumnBuilder(alter_column_node_js_1.AlterColumnNode.create(column)));
52
+ const builder = alteration(new alter_column_builder_js_1.AlterColumnBuilder(column));
54
53
  return new AlterTableColumnAlteringBuilder({
55
54
  ...this.#props,
56
55
  node: alter_table_node_js_1.AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),
@@ -133,12 +132,6 @@ class AlterTableBuilder {
133
132
  $call(func) {
134
133
  return func(this);
135
134
  }
136
- /**
137
- * @deprecated Use `$call` instead
138
- */
139
- call(func) {
140
- return this.$call(func);
141
- }
142
135
  }
143
136
  exports.AlterTableBuilder = AlterTableBuilder;
144
137
  class AlterTableColumnAlteringBuilder {
@@ -147,7 +140,7 @@ class AlterTableColumnAlteringBuilder {
147
140
  this.#props = (0, object_utils_js_1.freeze)(props);
148
141
  }
149
142
  alterColumn(column, alteration) {
150
- const builder = alteration(new alter_column_builder_js_1.AlterColumnBuilder(alter_column_node_js_1.AlterColumnNode.create(column)));
143
+ const builder = alteration(new alter_column_builder_js_1.AlterColumnBuilder(column));
151
144
  return new AlterTableColumnAlteringBuilder({
152
145
  ...this.#props,
153
146
  node: alter_table_node_js_1.AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),
@@ -212,4 +212,4 @@ export declare class ColumnDefinitionBuilder implements OperationNodeSource {
212
212
  $call<T>(func: (qb: this) => T): T;
213
213
  toOperationNode(): ColumnDefinitionNode;
214
214
  }
215
- export declare type ColumnDefinitionBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
215
+ export type ColumnDefinitionBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ColumnDefinitionBuilder = void 0;
4
4
  const check_constraint_node_js_1 = require("../operation-node/check-constraint-node.js");
5
- const reference_node_js_1 = require("../operation-node/reference-node.js");
6
5
  const references_node_js_1 = require("../operation-node/references-node.js");
7
6
  const select_all_node_js_1 = require("../operation-node/select-all-node.js");
8
7
  const reference_parser_js_1 = require("../parser/reference-parser.js");
@@ -51,7 +50,7 @@ class ColumnDefinitionBuilder {
51
50
  */
52
51
  references(ref) {
53
52
  const references = (0, reference_parser_js_1.parseStringReference)(ref);
54
- if (!reference_node_js_1.ReferenceNode.is(references) || select_all_node_js_1.SelectAllNode.is(references.column)) {
53
+ if (!references.table || select_all_node_js_1.SelectAllNode.is(references.column)) {
55
54
  throw new Error(`invalid call references('${ref}'). The reference must have format table.column or schema.table.column`);
56
55
  }
57
56
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
@@ -1,5 +1,6 @@
1
1
  import { CreateIndexNode, IndexType } from '../operation-node/create-index-node.js';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ import { ExtractColumnNameFromOrderedColumnName, OrderedColumnName } from '../parser/reference-parser.js';
3
4
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
5
  import { Compilable } from '../util/compilable.js';
5
6
  import { QueryExecutor } from '../query-executor/query-executor.js';
@@ -7,7 +8,7 @@ import { QueryId } from '../util/query-id.js';
7
8
  import { Expression } from '../expression/expression.js';
8
9
  import { ComparisonOperatorExpression } from '../parser/binary-operation-parser.js';
9
10
  import { ExpressionBuilder } from '../expression/expression-builder.js';
10
- import { SqlBool } from '../util/type-utils.js';
11
+ import { ShallowRecord, SqlBool } from '../util/type-utils.js';
11
12
  export declare class CreateIndexBuilder<C = never> implements OperationNodeSource, Compilable {
12
13
  #private;
13
14
  constructor(props: CreateIndexBuilderProps);
@@ -26,17 +27,52 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
26
27
  */
27
28
  on(table: string): CreateIndexBuilder<C>;
28
29
  /**
29
- * Specifies the column for the index.
30
+ * Adds a column to the index.
30
31
  *
31
- * Also see the `expression` for specifying an arbitrary expression.
32
+ * Also see {@link columns} for adding multiple columns at once or {@link expression}
33
+ * for specifying an arbitrary expression.
34
+ *
35
+ * ### Examples
36
+ *
37
+ * ```ts
38
+ * await db.schema
39
+ * .createIndex('person_first_name_and_age_index')
40
+ * .on('person')
41
+ * .column('first_name')
42
+ * .column('age desc')
43
+ * .execute()
44
+ * ```
45
+ *
46
+ * The generated SQL (PostgreSQL):
47
+ *
48
+ * ```sql
49
+ * create index "person_first_name_and_age_index" on "person" ("first_name", "age" desc)
50
+ * ```
32
51
  */
33
- column<CL extends string>(column: CL): CreateIndexBuilder<C | CL>;
52
+ column<CL extends string>(column: OrderedColumnName<CL>): CreateIndexBuilder<C | ExtractColumnNameFromOrderedColumnName<CL>>;
34
53
  /**
35
54
  * Specifies a list of columns for the index.
36
55
  *
37
- * Also see the `expression` for specifying an arbitrary expression.
56
+ * Also see {@link column} for adding a single column or {@link expression} for
57
+ * specifying an arbitrary expression.
58
+ *
59
+ * ### Examples
60
+ *
61
+ * ```ts
62
+ * await db.schema
63
+ * .createIndex('person_first_name_and_age_index')
64
+ * .on('person')
65
+ * .columns(['first_name', 'age desc'])
66
+ * .execute()
67
+ * ```
68
+ *
69
+ * The generated SQL (PostgreSQL):
70
+ *
71
+ * ```sql
72
+ * create index "person_first_name_and_age_index" on "person" ("first_name", "age" desc)
73
+ * ```
38
74
  */
39
- columns<CL extends string>(columns: CL[]): CreateIndexBuilder<C | CL>;
75
+ columns<CL extends string>(columns: OrderedColumnName<CL>[]): CreateIndexBuilder<C | ExtractColumnNameFromOrderedColumnName<CL>>;
40
76
  /**
41
77
  * Specifies an arbitrary expression for the index.
42
78
  *
@@ -51,6 +87,12 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
51
87
  * .expression(sql`first_name COLLATE "fi_FI"`)
52
88
  * .execute()
53
89
  * ```
90
+ *
91
+ * The generated SQL (PostgreSQL):
92
+ *
93
+ * ```sql
94
+ * create index "person_first_name_index" on "person" (first_name COLLATE "fi_FI")
95
+ * ```
54
96
  */
55
97
  expression(expression: Expression<any>): CreateIndexBuilder<C>;
56
98
  /**
@@ -90,7 +132,7 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
90
132
  * Parameters are always sent as literals due to database restrictions.
91
133
  */
92
134
  where(lhs: C | Expression<any>, op: ComparisonOperatorExpression, rhs: unknown): CreateIndexBuilder<C>;
93
- where(factory: (qb: ExpressionBuilder<Record<string, Record<C & string, any>>, string>) => Expression<SqlBool>): CreateIndexBuilder<C>;
135
+ where(factory: (qb: ExpressionBuilder<ShallowRecord<string, ShallowRecord<C & string, any>>, string>) => Expression<SqlBool>): CreateIndexBuilder<C>;
94
136
  where(expression: Expression<any>): CreateIndexBuilder<C>;
95
137
  /**
96
138
  * Simply calls the provided function passing `this` as the only argument. `$call` returns