kysely 0.22.0 → 0.23.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 (358) hide show
  1. package/CONTRIBUTING.md +70 -0
  2. package/README.md +25 -2
  3. package/dist/cjs/dialect/database-introspector.d.ts +4 -0
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
  8. package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
  10. package/dist/cjs/driver/database-connection.d.ts +6 -2
  11. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
  12. package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
  13. package/dist/cjs/expression/expression.d.ts +100 -0
  14. package/dist/cjs/expression/expression.js +16 -0
  15. package/dist/cjs/index.d.ts +10 -6
  16. package/dist/cjs/index.js +8 -2
  17. package/dist/cjs/migration/file-migration-provider.js +5 -3
  18. package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
  19. package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
  20. package/dist/cjs/operation-node/alias-node.d.ts +3 -11
  21. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
  22. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
  23. package/dist/cjs/operation-node/alter-table-node.js +9 -1
  24. package/dist/cjs/operation-node/and-node.d.ts +3 -4
  25. package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
  26. package/dist/cjs/operation-node/binary-operation-node.js +20 -0
  27. package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
  28. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  29. package/dist/cjs/operation-node/column-definition-node.js +16 -0
  30. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  31. package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
  32. package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
  33. package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
  34. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/create-type-node.js +1 -2
  36. package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
  37. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  38. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/drop-type-node.js +1 -2
  40. package/dist/cjs/operation-node/explain-node.d.ts +2 -4
  41. package/dist/cjs/operation-node/explain-node.js +1 -1
  42. package/dist/cjs/operation-node/from-node.d.ts +3 -4
  43. package/dist/cjs/operation-node/generated-node.d.ts +2 -3
  44. package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
  45. package/dist/cjs/operation-node/having-node.d.ts +3 -4
  46. package/dist/cjs/operation-node/having-node.js +4 -4
  47. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -5
  48. package/dist/cjs/operation-node/join-node.d.ts +5 -9
  49. package/dist/cjs/operation-node/join-node.js +6 -6
  50. package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
  51. package/dist/cjs/operation-node/on-conflict-node.js +12 -12
  52. package/dist/cjs/operation-node/on-node.d.ts +3 -4
  53. package/dist/cjs/operation-node/on-node.js +4 -4
  54. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
  55. package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
  56. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
  57. package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
  58. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/operator-node.d.ts +5 -3
  60. package/dist/cjs/operation-node/operator-node.js +3 -5
  61. package/dist/cjs/operation-node/or-node.d.ts +3 -4
  62. package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
  63. package/dist/cjs/operation-node/parens-node.d.ts +2 -3
  64. package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
  65. package/dist/cjs/operation-node/query-node.d.ts +2 -3
  66. package/dist/cjs/operation-node/query-node.js +6 -6
  67. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
  68. package/dist/cjs/operation-node/select-modifier-node.js +1 -1
  69. package/dist/cjs/operation-node/select-query-node.d.ts +5 -6
  70. package/dist/cjs/operation-node/select-query-node.js +10 -10
  71. package/dist/cjs/operation-node/selection-node.d.ts +2 -3
  72. package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
  73. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
  74. package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
  75. package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
  76. package/dist/cjs/operation-node/unary-operation-node.js +19 -0
  77. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  78. package/dist/cjs/operation-node/value-list-node.d.ts +2 -9
  79. package/dist/cjs/operation-node/where-node.d.ts +3 -4
  80. package/dist/cjs/operation-node/where-node.js +4 -4
  81. package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
  82. package/dist/cjs/parser/binary-operation-parser.js +99 -0
  83. package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
  84. package/dist/cjs/parser/coalesce-parser.js +11 -0
  85. package/dist/cjs/parser/data-type-parser.d.ts +5 -5
  86. package/dist/cjs/parser/default-value-parser.d.ts +4 -5
  87. package/dist/cjs/parser/default-value-parser.js +2 -2
  88. package/dist/cjs/parser/expression-parser.d.ts +10 -0
  89. package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
  90. package/dist/cjs/parser/identifier-parser.d.ts +2 -0
  91. package/dist/cjs/parser/identifier-parser.js +23 -0
  92. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  93. package/dist/cjs/parser/insert-values-parser.js +2 -2
  94. package/dist/cjs/parser/join-parser.js +2 -2
  95. package/dist/cjs/parser/order-by-parser.d.ts +2 -2
  96. package/dist/cjs/parser/reference-parser.d.ts +14 -14
  97. package/dist/cjs/parser/reference-parser.js +12 -9
  98. package/dist/cjs/parser/select-parser.d.ts +6 -7
  99. package/dist/cjs/parser/select-parser.js +2 -2
  100. package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
  101. package/dist/cjs/parser/table-parser.d.ts +11 -12
  102. package/dist/cjs/parser/table-parser.js +2 -2
  103. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
  104. package/dist/cjs/parser/unary-operation-parser.js +17 -0
  105. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  106. package/dist/cjs/parser/value-parser.d.ts +5 -9
  107. package/dist/cjs/parser/value-parser.js +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +3 -4
  109. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  110. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +245 -14
  111. package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
  112. package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
  113. package/dist/cjs/query-builder/delete-query-builder.js +19 -16
  114. package/dist/cjs/query-builder/function-module.d.ts +123 -22
  115. package/dist/cjs/query-builder/function-module.js +91 -48
  116. package/dist/cjs/query-builder/having-interface.d.ts +9 -8
  117. package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
  118. package/dist/cjs/query-builder/insert-query-builder.js +11 -9
  119. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  120. package/dist/cjs/query-builder/insert-result.js +12 -1
  121. package/dist/cjs/query-builder/join-builder.d.ts +9 -8
  122. package/dist/cjs/query-builder/join-builder.js +10 -9
  123. package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
  124. package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
  125. package/dist/cjs/query-builder/select-query-builder.d.ts +82 -51
  126. package/dist/cjs/query-builder/select-query-builder.js +39 -37
  127. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
  128. package/dist/cjs/query-builder/update-query-builder.js +19 -16
  129. package/dist/cjs/query-builder/where-interface.d.ts +12 -11
  130. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  131. package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -3
  132. package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
  133. package/dist/cjs/query-executor/query-executor-base.js +16 -1
  134. package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
  135. package/dist/cjs/raw-builder/raw-builder.js +24 -14
  136. package/dist/cjs/raw-builder/sql.d.ts +4 -4
  137. package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
  138. package/dist/cjs/schema/alter-column-builder.js +55 -0
  139. package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
  140. package/dist/cjs/schema/alter-table-builder.js +63 -278
  141. package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
  142. package/dist/cjs/schema/column-definition-builder.js +189 -0
  143. package/dist/cjs/schema/create-index-builder.d.ts +3 -3
  144. package/dist/cjs/schema/create-index-builder.js +7 -7
  145. package/dist/cjs/schema/create-schema-builder.d.ts +1 -1
  146. package/dist/cjs/schema/create-schema-builder.js +2 -2
  147. package/dist/cjs/schema/create-table-builder.d.ts +39 -6
  148. package/dist/cjs/schema/create-table-builder.js +47 -12
  149. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  150. package/dist/cjs/schema/create-type-builder.js +2 -2
  151. package/dist/cjs/schema/create-view-builder.d.ts +4 -3
  152. package/dist/cjs/schema/create-view-builder.js +7 -7
  153. package/dist/cjs/schema/drop-index-builder.d.ts +1 -1
  154. package/dist/cjs/schema/drop-index-builder.js +4 -4
  155. package/dist/cjs/schema/drop-schema-builder.d.ts +1 -1
  156. package/dist/cjs/schema/drop-schema-builder.js +3 -3
  157. package/dist/cjs/schema/drop-table-builder.d.ts +1 -1
  158. package/dist/cjs/schema/drop-table-builder.js +3 -3
  159. package/dist/cjs/schema/drop-type-builder.d.ts +1 -1
  160. package/dist/cjs/schema/drop-type-builder.js +2 -2
  161. package/dist/cjs/schema/drop-view-builder.d.ts +1 -1
  162. package/dist/cjs/schema/drop-view-builder.js +4 -4
  163. package/dist/cjs/schema/schema.d.ts +2 -2
  164. package/dist/cjs/schema/schema.js +14 -13
  165. package/dist/cjs/util/compilable.d.ts +2 -2
  166. package/dist/cjs/util/explainable.d.ts +2 -2
  167. package/dist/cjs/util/infer-result.d.ts +46 -0
  168. package/dist/cjs/util/infer-result.js +2 -0
  169. package/dist/cjs/util/log-once.d.ts +5 -0
  170. package/dist/cjs/util/log-once.js +16 -0
  171. package/dist/cjs/util/object-utils.d.ts +1 -0
  172. package/dist/cjs/util/object-utils.js +5 -1
  173. package/dist/cjs/util/type-utils.d.ts +3 -17
  174. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  175. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  176. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  177. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  178. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  179. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  180. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  181. package/dist/esm/driver/database-connection.d.ts +6 -2
  182. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  183. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  184. package/dist/esm/expression/expression.d.ts +100 -0
  185. package/dist/esm/expression/expression.js +12 -0
  186. package/dist/esm/index.d.ts +10 -6
  187. package/dist/esm/index.js +6 -2
  188. package/dist/esm/migration/file-migration-provider.js +5 -3
  189. package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
  190. package/dist/esm/operation-node/aggregate-function-node.js +17 -0
  191. package/dist/esm/operation-node/alias-node.d.ts +3 -11
  192. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  193. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  194. package/dist/esm/operation-node/alter-table-node.js +9 -1
  195. package/dist/esm/operation-node/and-node.d.ts +3 -4
  196. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  197. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  198. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  199. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  200. package/dist/esm/operation-node/column-definition-node.js +16 -0
  201. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  202. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  203. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  204. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  205. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  206. package/dist/esm/operation-node/create-type-node.js +1 -2
  207. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  208. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  209. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  210. package/dist/esm/operation-node/drop-type-node.js +1 -2
  211. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  212. package/dist/esm/operation-node/explain-node.js +1 -1
  213. package/dist/esm/operation-node/from-node.d.ts +3 -4
  214. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  215. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  216. package/dist/esm/operation-node/having-node.d.ts +3 -4
  217. package/dist/esm/operation-node/having-node.js +4 -4
  218. package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
  219. package/dist/esm/operation-node/join-node.d.ts +5 -9
  220. package/dist/esm/operation-node/join-node.js +6 -6
  221. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  222. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  223. package/dist/esm/operation-node/on-node.d.ts +3 -4
  224. package/dist/esm/operation-node/on-node.js +4 -4
  225. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  226. package/dist/esm/operation-node/operation-node-transformer.js +22 -15
  227. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  228. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  229. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  230. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  231. package/dist/esm/operation-node/operator-node.js +2 -4
  232. package/dist/esm/operation-node/or-node.d.ts +3 -4
  233. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  234. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  235. package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
  236. package/dist/esm/operation-node/query-node.d.ts +2 -3
  237. package/dist/esm/operation-node/query-node.js +6 -6
  238. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  239. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  240. package/dist/esm/operation-node/select-query-node.d.ts +5 -6
  241. package/dist/esm/operation-node/select-query-node.js +10 -10
  242. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  243. package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
  244. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  245. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  246. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  247. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  248. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  249. package/dist/esm/operation-node/value-list-node.d.ts +2 -9
  250. package/dist/esm/operation-node/where-node.d.ts +3 -4
  251. package/dist/esm/operation-node/where-node.js +4 -4
  252. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  253. package/dist/esm/parser/binary-operation-parser.js +92 -0
  254. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  255. package/dist/esm/parser/coalesce-parser.js +8 -0
  256. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  257. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  258. package/dist/esm/parser/default-value-parser.js +2 -2
  259. package/dist/esm/parser/expression-parser.d.ts +10 -0
  260. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  261. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  262. package/dist/esm/parser/identifier-parser.js +20 -0
  263. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  264. package/dist/esm/parser/insert-values-parser.js +2 -2
  265. package/dist/esm/parser/join-parser.js +2 -2
  266. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +14 -14
  268. package/dist/esm/parser/reference-parser.js +10 -8
  269. package/dist/esm/parser/select-parser.d.ts +6 -7
  270. package/dist/esm/parser/select-parser.js +2 -2
  271. package/dist/esm/parser/set-operation-parser.d.ts +2 -4
  272. package/dist/esm/parser/table-parser.d.ts +11 -12
  273. package/dist/esm/parser/table-parser.js +2 -2
  274. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  275. package/dist/esm/parser/unary-operation-parser.js +13 -0
  276. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  277. package/dist/esm/parser/value-parser.d.ts +5 -9
  278. package/dist/esm/parser/value-parser.js +4 -4
  279. package/dist/esm/parser/with-parser.d.ts +3 -4
  280. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
  282. package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
  283. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  284. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  285. package/dist/esm/query-builder/function-module.d.ts +123 -22
  286. package/dist/esm/query-builder/function-module.js +92 -49
  287. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  288. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  289. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  290. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  291. package/dist/esm/query-builder/insert-result.js +12 -1
  292. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  293. package/dist/esm/query-builder/join-builder.js +10 -9
  294. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  295. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  296. package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
  297. package/dist/esm/query-builder/select-query-builder.js +38 -36
  298. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  299. package/dist/esm/query-builder/update-query-builder.js +19 -16
  300. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  301. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  302. package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
  303. package/dist/esm/query-compiler/default-query-compiler.js +38 -34
  304. package/dist/esm/query-executor/query-executor-base.js +16 -1
  305. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  306. package/dist/esm/raw-builder/raw-builder.js +23 -14
  307. package/dist/esm/raw-builder/sql.d.ts +4 -4
  308. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  309. package/dist/esm/schema/alter-column-builder.js +51 -0
  310. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  311. package/dist/esm/schema/alter-table-builder.js +59 -272
  312. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  313. package/dist/esm/schema/column-definition-builder.js +189 -0
  314. package/dist/esm/schema/create-index-builder.d.ts +3 -3
  315. package/dist/esm/schema/create-index-builder.js +7 -7
  316. package/dist/esm/schema/create-schema-builder.d.ts +1 -1
  317. package/dist/esm/schema/create-schema-builder.js +2 -2
  318. package/dist/esm/schema/create-table-builder.d.ts +39 -6
  319. package/dist/esm/schema/create-table-builder.js +47 -12
  320. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  321. package/dist/esm/schema/create-type-builder.js +2 -2
  322. package/dist/esm/schema/create-view-builder.d.ts +4 -3
  323. package/dist/esm/schema/create-view-builder.js +7 -7
  324. package/dist/esm/schema/drop-index-builder.d.ts +1 -1
  325. package/dist/esm/schema/drop-index-builder.js +4 -4
  326. package/dist/esm/schema/drop-schema-builder.d.ts +1 -1
  327. package/dist/esm/schema/drop-schema-builder.js +3 -3
  328. package/dist/esm/schema/drop-table-builder.d.ts +1 -1
  329. package/dist/esm/schema/drop-table-builder.js +3 -3
  330. package/dist/esm/schema/drop-type-builder.d.ts +1 -1
  331. package/dist/esm/schema/drop-type-builder.js +2 -2
  332. package/dist/esm/schema/drop-view-builder.d.ts +1 -1
  333. package/dist/esm/schema/drop-view-builder.js +4 -4
  334. package/dist/esm/schema/schema.d.ts +2 -2
  335. package/dist/esm/schema/schema.js +14 -13
  336. package/dist/esm/util/compilable.d.ts +2 -2
  337. package/dist/esm/util/explainable.d.ts +2 -2
  338. package/dist/esm/util/infer-result.d.ts +46 -0
  339. package/dist/esm/util/infer-result.js +2 -0
  340. package/dist/esm/util/log-once.d.ts +5 -0
  341. package/dist/esm/util/log-once.js +13 -0
  342. package/dist/esm/util/object-utils.d.ts +1 -0
  343. package/dist/esm/util/object-utils.js +3 -0
  344. package/dist/esm/util/type-utils.d.ts +3 -17
  345. package/package.json +1 -1
  346. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  347. package/dist/cjs/operation-node/filter-node.js +0 -20
  348. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
  349. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
  350. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  351. package/dist/cjs/parser/filter-parser.js +0 -109
  352. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  353. package/dist/esm/operation-node/filter-node.js +0 -18
  354. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
  355. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  356. package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
  357. package/dist/esm/parser/filter-parser.d.ts +0 -24
  358. package/dist/esm/parser/filter-parser.js +0 -100
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AliasedRawBuilder = exports.RawBuilder = void 0;
3
+ exports.AliasedRawBuilder = exports.isRawBuilder = exports.RawBuilder = void 0;
4
4
  const alias_node_js_1 = require("../operation-node/alias-node.js");
5
- const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
6
5
  const prevent_await_js_1 = require("../util/prevent-await.js");
7
6
  const object_utils_js_1 = require("../util/object-utils.js");
8
7
  const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
9
8
  const identifier_node_js_1 = require("../operation-node/identifier-node.js");
9
+ const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
10
10
  /**
11
11
  * An instance of this class can be used to create raw SQL snippets or queries.
12
12
  *
@@ -18,6 +18,10 @@ class RawBuilder {
18
18
  constructor(props) {
19
19
  this.#props = (0, object_utils_js_1.freeze)(props);
20
20
  }
21
+ /** @private */
22
+ get expressionType() {
23
+ return undefined;
24
+ }
21
25
  as(alias) {
22
26
  return new AliasedRawBuilder(this, alias);
23
27
  }
@@ -61,6 +65,15 @@ class RawBuilder {
61
65
  }
62
66
  }
63
67
  exports.RawBuilder = RawBuilder;
68
+ function isRawBuilder(obj) {
69
+ return ((0, object_utils_js_1.isObject)(obj) &&
70
+ (0, object_utils_js_1.isFunction)(obj.as) &&
71
+ (0, object_utils_js_1.isFunction)(obj.castTo) &&
72
+ (0, object_utils_js_1.isFunction)(obj.withPlugin) &&
73
+ (0, object_utils_js_1.isFunction)(obj.toOperationNode) &&
74
+ (0, object_utils_js_1.isFunction)(obj.execute));
75
+ }
76
+ exports.isRawBuilder = isRawBuilder;
64
77
  (0, prevent_await_js_1.preventAwait)(RawBuilder, "don't await RawBuilder instances directly. To execute the query you need to call `execute`");
65
78
  /**
66
79
  * {@link RawBuilder} with an alias. The result of calling {@link RawBuilder.as}.
@@ -68,14 +81,15 @@ exports.RawBuilder = RawBuilder;
68
81
  class AliasedRawBuilder {
69
82
  #rawBuilder;
70
83
  #alias;
71
- /**
72
- * @private
73
- *
74
- * This needs to be here just so that the typings work. Without this
75
- * the generated .d.ts file contains no reference to the type param A
76
- * which causes this type to be equal to AliasedRawBuilder with any A
77
- * as long as O is the same.
78
- */
84
+ constructor(rawBuilder, alias) {
85
+ this.#rawBuilder = rawBuilder;
86
+ this.#alias = alias;
87
+ }
88
+ /** @private */
89
+ get expression() {
90
+ return this.#rawBuilder;
91
+ }
92
+ /** @private */
79
93
  get alias() {
80
94
  return this.#alias;
81
95
  }
@@ -84,9 +98,5 @@ class AliasedRawBuilder {
84
98
  ? this.#alias.toOperationNode()
85
99
  : identifier_node_js_1.IdentifierNode.create(this.#alias));
86
100
  }
87
- constructor(rawBuilder, alias) {
88
- this.#rawBuilder = rawBuilder;
89
- this.#alias = alias;
90
- }
91
101
  }
92
102
  exports.AliasedRawBuilder = AliasedRawBuilder;
@@ -101,10 +101,10 @@ export interface Sql {
101
101
  * `sql.value(value)` is a shortcut for:
102
102
  *
103
103
  * ```ts
104
- * sql`${value}`
104
+ * sql<ValueType>`${value}`
105
105
  * ```
106
106
  */
107
- value(value: unknown): RawBuilder<unknown>;
107
+ value<T>(value: T): RawBuilder<T>;
108
108
  /**
109
109
  * This can be used to add runtime column references to SQL snippets.
110
110
  *
@@ -234,7 +234,7 @@ export interface Sql {
234
234
  * select "public"."person"."first_name" from "public"."person"
235
235
  * ```
236
236
  */
237
- id(...ids: string[]): RawBuilder<unknown>;
237
+ id(...ids: readonly string[]): RawBuilder<unknown>;
238
238
  /**
239
239
  * This can be used to add literal values to SQL snippets.
240
240
  *
@@ -334,6 +334,6 @@ export interface Sql {
334
334
  * BEFORE $1::varchar, (1 == 1)::varchar, (select * from "person")::varchar, false::varchar, "first_name" AFTER
335
335
  * ```
336
336
  */
337
- join(array: unknown[], separator?: RawBuilder<any>): RawBuilder<unknown>;
337
+ join(array: readonly unknown[], separator?: RawBuilder<any>): RawBuilder<unknown>;
338
338
  }
339
339
  export declare const sql: Sql;
@@ -0,0 +1,28 @@
1
+ import { AlterColumnNode } from '../operation-node/alter-column-node.js';
2
+ import { ColumnDataType } from '../operation-node/data-type-node.js';
3
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
4
+ import { DefaultValueExpression } from '../parser/default-value-parser.js';
5
+ export declare class AlterColumnBuilder {
6
+ protected readonly alterColumnNode: AlterColumnNode;
7
+ constructor(alterColumnNode: AlterColumnNode);
8
+ setDataType(dataType: ColumnDataType): AlteredColumnBuilder;
9
+ setDefault(value: DefaultValueExpression): AlteredColumnBuilder;
10
+ dropDefault(): AlteredColumnBuilder;
11
+ setNotNull(): AlteredColumnBuilder;
12
+ dropNotNull(): AlteredColumnBuilder;
13
+ }
14
+ /**
15
+ * Allows us to force consumers to do something, anything, when altering a column.
16
+ *
17
+ * Basically, deny the following:
18
+ *
19
+ * ```ts
20
+ * db.schema.alterTable('person').alterColumn('age', (ac) => ac)
21
+ * ```
22
+ *
23
+ * Which would now throw a compilation error, instead of a runtime error.
24
+ */
25
+ export declare class AlteredColumnBuilder extends AlterColumnBuilder implements OperationNodeSource {
26
+ toOperationNode(): AlterColumnNode;
27
+ }
28
+ export declare type AlterColumnBuilderCallback = (builder: AlterColumnBuilder) => AlteredColumnBuilder;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AlteredColumnBuilder = exports.AlterColumnBuilder = void 0;
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");
6
+ const default_value_parser_js_1 = require("../parser/default-value-parser.js");
7
+ class AlterColumnBuilder {
8
+ alterColumnNode;
9
+ constructor(alterColumnNode) {
10
+ this.alterColumnNode = alterColumnNode;
11
+ }
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
+ }));
16
+ }
17
+ 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
+ }));
21
+ }
22
+ dropDefault() {
23
+ return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.cloneWith(this.alterColumnNode, {
24
+ dropDefault: true,
25
+ }));
26
+ }
27
+ setNotNull() {
28
+ return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.cloneWith(this.alterColumnNode, {
29
+ setNotNull: true,
30
+ }));
31
+ }
32
+ dropNotNull() {
33
+ return new AlteredColumnBuilder(alter_column_node_js_1.AlterColumnNode.cloneWith(this.alterColumnNode, {
34
+ dropNotNull: true,
35
+ }));
36
+ }
37
+ }
38
+ exports.AlterColumnBuilder = AlterColumnBuilder;
39
+ /**
40
+ * Allows us to force consumers to do something, anything, when altering a column.
41
+ *
42
+ * Basically, deny the following:
43
+ *
44
+ * ```ts
45
+ * db.schema.alterTable('person').alterColumn('age', (ac) => ac)
46
+ * ```
47
+ *
48
+ * Which would now throw a compilation error, instead of a runtime error.
49
+ */
50
+ class AlteredColumnBuilder extends AlterColumnBuilder {
51
+ toOperationNode() {
52
+ return this.alterColumnNode;
53
+ }
54
+ }
55
+ exports.AlteredColumnBuilder = AlteredColumnBuilder;
@@ -1,38 +1,36 @@
1
- import { AlterColumnNode } from '../operation-node/alter-column-node.js';
2
1
  import { AlterTableNode } from '../operation-node/alter-table-node.js';
3
- import { ColumnDataType } from '../operation-node/data-type-node.js';
4
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
5
3
  import { OnModifyForeignAction } from '../operation-node/references-node.js';
6
4
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
7
5
  import { Compilable } from '../util/compilable.js';
8
- import { ColumnDefinitionBuilder, ColumnDefinitionBuilderInterface } from './column-definition-builder.js';
9
- import { AnyRawBuilder } from '../util/type-utils.js';
6
+ import { ColumnDefinitionBuilderCallback } from './column-definition-builder.js';
10
7
  import { QueryId } from '../util/query-id.js';
11
8
  import { QueryExecutor } from '../query-executor/query-executor.js';
12
9
  import { DataTypeExpression } from '../parser/data-type-parser.js';
13
10
  import { ForeignKeyConstraintBuilder, ForeignKeyConstraintBuilderInterface } from './foreign-key-constraint-builder.js';
14
- import { DefaultValueExpression } from '../parser/default-value-parser.js';
11
+ import { Expression } from '../expression/expression.js';
12
+ import { AlterColumnBuilderCallback } from './alter-column-builder.js';
15
13
  /**
16
14
  * This builder can be used to create a `alter table` query.
17
15
  */
18
- export declare class AlterTableBuilder {
16
+ export declare class AlterTableBuilder implements ColumnAlteringInterface {
19
17
  #private;
20
18
  constructor(props: AlterTableBuilderProps);
21
19
  renameTo(newTableName: string): AlterTableExecutor;
22
20
  setSchema(newSchema: string): AlterTableExecutor;
23
- alterColumn(column: string): AlterColumnBuilder;
24
- dropColumn(column: string): AlterTableExecutor;
25
- renameColumn(column: string, newColumn: string): AlterTableExecutor;
21
+ alterColumn(column: string, alteration: AlterColumnBuilderCallback): AlterTableColumnAlteringBuilder;
22
+ dropColumn(column: string): AlterTableColumnAlteringBuilder;
23
+ renameColumn(column: string, newColumn: string): AlterTableColumnAlteringBuilder;
26
24
  /**
27
25
  * See {@link CreateTableBuilder.addColumn}
28
26
  */
29
- addColumn(columnName: string, dataType: DataTypeExpression, build?: AlterTableAddColumnBuilderCallback): AlterTableAddColumnBuilder;
27
+ addColumn(columnName: string, dataType: DataTypeExpression, build?: ColumnDefinitionBuilderCallback): AlterTableColumnAlteringBuilder;
30
28
  /**
31
29
  * Creates an `alter table modify column` query. The `modify column` statement
32
30
  * is only implemeted by MySQL and oracle AFAIK. On other databases you
33
31
  * should use the `alterColumn` method.
34
32
  */
35
- modifyColumn(columnName: string, dataType: DataTypeExpression): AlterTableModifyColumnBuilder;
33
+ modifyColumn(columnName: string, dataType: DataTypeExpression, build?: ColumnDefinitionBuilderCallback): AlterTableColumnAlteringBuilder;
36
34
  /**
37
35
  * See {@link CreateTableBuilder.addUniqueConstraint}
38
36
  */
@@ -40,7 +38,7 @@ export declare class AlterTableBuilder {
40
38
  /**
41
39
  * See {@link CreateTableBuilder.addCheckConstraint}
42
40
  */
43
- addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): AlterTableExecutor;
41
+ addCheckConstraint(constraintName: string, checkExpression: Expression<any>): AlterTableExecutor;
44
42
  /**
45
43
  * See {@link CreateTableBuilder.addForeignKeyConstraint}
46
44
  *
@@ -50,23 +48,17 @@ export declare class AlterTableBuilder {
50
48
  */
51
49
  addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): AlterTableAddForeignKeyConstraintBuilder;
52
50
  dropConstraint(constraintName: string): AlterTableDropConstraintBuilder;
51
+ /**
52
+ * Calls the given function passing `this` as the only argument.
53
+ *
54
+ * See {@link CreateTableBuilder.call}
55
+ */
56
+ call<T>(func: (qb: this) => T): T;
53
57
  }
54
58
  export interface AlterTableBuilderProps {
55
59
  readonly queryId: QueryId;
56
- readonly alterTableNode: AlterTableNode;
57
60
  readonly executor: QueryExecutor;
58
- }
59
- export declare class AlterColumnBuilder {
60
- #private;
61
- constructor(props: AlterColumnBuilderProps);
62
- setDataType(dataType: ColumnDataType): AlterTableExecutor;
63
- setDefault(value: DefaultValueExpression): AlterTableExecutor;
64
- dropDefault(): AlterTableExecutor;
65
- setNotNull(): AlterTableExecutor;
66
- dropNotNull(): AlterTableExecutor;
67
- }
68
- export interface AlterColumnBuilderProps extends AlterTableBuilderProps {
69
- readonly alterColumnNode: AlterColumnNode;
61
+ readonly node: AlterTableNode;
70
62
  }
71
63
  export declare class AlterTableExecutor implements OperationNodeSource, Compilable {
72
64
  #private;
@@ -77,336 +69,42 @@ export declare class AlterTableExecutor implements OperationNodeSource, Compilab
77
69
  }
78
70
  export interface AlterTableExecutorProps extends AlterTableBuilderProps {
79
71
  }
80
- export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface, OperationNodeSource, Compilable {
81
- #private;
82
- constructor(props: AlterTableAddColumnBuilderProps);
83
- /**
84
- * Adds `auto_increment` or `autoincrement` to the column definition
85
- * depending on the dialect.
86
- *
87
- * Some dialects like PostgreSQL don't support this. On PostgreSQL
88
- * you can use the `serial` or `bigserial` data type instead.
89
- */
90
- autoIncrement(): AlterTableAddColumnBuilder;
91
- /**
92
- * Makes the column the primary key.
93
- *
94
- * If you want to specify a composite primary key use the
95
- * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
96
- */
97
- primaryKey(): AlterTableAddColumnBuilder;
98
- /**
99
- * Adds a foreign key constraint for the column.
100
- *
101
- * If your database engine doesn't support foreign key constraints in the
102
- * column definition (like MySQL 5) you need to call the table level
103
- * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
104
- *
105
- * ### Examples
106
- *
107
- * ```ts
108
- * col.references('person.id')
109
- * ```
110
- */
111
- references(ref: string): AlterTableAddColumnBuilder;
112
- /**
113
- * Adds an `on delete` constraint for the foreign key column.
114
- *
115
- * If your database engine doesn't support foreign key constraints in the
116
- * column definition (like MySQL 5) you need to call the table level
117
- * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
118
- *
119
- * ### Examples
120
- *
121
- * ```ts
122
- * col.references('person.id').onDelete('cascade')
123
- * ```
124
- */
125
- onDelete(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
126
- /**
127
- * Adds an `on update` constraint for the foreign key column.
128
- *
129
- * ### Examples
130
- *
131
- * ```ts
132
- * col.references('person.id').onUpdate('cascade')
133
- * ```
134
- */
135
- onUpdate(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
136
- /**
137
- * Adds a unique constraint for the column.
138
- */
139
- unique(): AlterTableAddColumnBuilder;
72
+ export interface ColumnAlteringInterface {
73
+ alterColumn(column: string, alteration: AlterColumnBuilderCallback): ColumnAlteringInterface;
74
+ dropColumn(column: string): ColumnAlteringInterface;
75
+ renameColumn(column: string, newColumn: string): ColumnAlteringInterface;
140
76
  /**
141
- * Adds a `not null` constraint for the column.
142
- */
143
- notNull(): AlterTableAddColumnBuilder;
144
- /**
145
- * Adds a `unsigned` modifier for the column.
146
- *
147
- * This only works on some dialects like MySQL.
148
- */
149
- unsigned(): AlterTableAddColumnBuilder;
150
- /**
151
- * Adds a default value constraint for the column.
152
- *
153
- * ### Examples
154
- *
155
- * ```ts
156
- * db.schema
157
- * .createTable('pet')
158
- * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
159
- * .execute()
160
- * ```
161
- *
162
- * Values passed to `defaultTo` are interpreted as value literals by default. You can define
163
- * an arbitrary SQL expression using the {@link sql} template tag:
164
- *
165
- * ```ts
166
- * import { sql } from 'kysely'
167
- *
168
- * db.schema
169
- * .createTable('pet')
170
- * .addColumn(
171
- * 'number_of_legs',
172
- * 'integer',
173
- * (col) => col.defaultTo(sql`any SQL here`)
174
- * )
175
- * .execute()
176
- * ```
177
- */
178
- defaultTo(value: DefaultValueExpression): AlterTableAddColumnBuilder;
179
- /**
180
- * Adds a check constraint for the column.
181
- *
182
- * ### Examples
183
- *
184
- * ```ts
185
- * import { sql } from 'kysely'
186
- *
187
- * db.schema
188
- * .createTable('pet')
189
- * .addColumn('number_of_legs', 'integer', (col) =>
190
- * col.check(sql`number_of_legs < 5`)
191
- * )
192
- * .execute()
193
- * ```
194
- */
195
- check(expression: AnyRawBuilder): AlterTableAddColumnBuilder;
196
- /**
197
- * Makes the column a generated column using a `generated always as` statement.
198
- *
199
- * ### Examples
200
- *
201
- * ```ts
202
- * import { sql } from 'kysely'
203
- *
204
- * db.schema
205
- * .createTable('person')
206
- * .addColumn('full_name', 'varchar(255)',
207
- * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
208
- * )
209
- * .execute()
210
- * ```
211
- */
212
- generatedAlwaysAs(expression: AnyRawBuilder): AlterTableAddColumnBuilder;
213
- /**
214
- * Adds the `generated always as identity` specifier on supported dialects.
215
- */
216
- generatedAlwaysAsIdentity(): AlterTableAddColumnBuilder;
217
- /**
218
- * Adds the `generated by default as identity` specifier on supported dialects.
77
+ * See {@link CreateTableBuilder.addColumn}
219
78
  */
220
- generatedByDefaultAsIdentity(): AlterTableAddColumnBuilder;
79
+ addColumn(columnName: string, dataType: DataTypeExpression, build?: ColumnDefinitionBuilderCallback): ColumnAlteringInterface;
221
80
  /**
222
- * Makes a generated column stored instead of virtual. This method can only
223
- * be used with {@link generatedAlwaysAs}
224
- *
225
- * ### Examples
226
- *
227
- * ```ts
228
- * db.schema
229
- * .createTable('person')
230
- * .addColumn('full_name', 'varchar(255)', (col) => col
231
- * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
232
- * .stored()
233
- * )
234
- * .execute()
235
- * ```
81
+ * Creates an `alter table modify column` query. The `modify column` statement
82
+ * is only implemeted by MySQL and oracle AFAIK. On other databases you
83
+ * should use the `alterColumn` method.
236
84
  */
237
- stored(): AlterTableAddColumnBuilder;
238
- toOperationNode(): AlterTableNode;
239
- compile(): CompiledQuery;
240
- execute(): Promise<void>;
85
+ modifyColumn(columnName: string, dataType: DataTypeExpression, build: ColumnDefinitionBuilderCallback): ColumnAlteringInterface;
241
86
  }
242
- export interface AlterTableAddColumnBuilderProps extends AlterTableBuilderProps {
243
- readonly columnBuilder: ColumnDefinitionBuilder;
244
- }
245
- export declare type AlterTableAddColumnBuilderCallback = (builder: AlterTableAddColumnBuilder) => AlterTableAddColumnBuilder;
246
- export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface, OperationNodeSource, Compilable {
87
+ export declare class AlterTableColumnAlteringBuilder implements ColumnAlteringInterface, OperationNodeSource, Compilable {
247
88
  #private;
248
- constructor(props: AlterTableModifyColumnBuilderProps);
249
- /**
250
- * Adds `auto_increment` or `autoincrement` to the column definition
251
- * depending on the dialect.
252
- *
253
- * Some dialects like PostgreSQL don't support this. On PostgreSQL
254
- * you can use the `serial` or `bigserial` data type instead.
255
- */
256
- autoIncrement(): AlterTableModifyColumnBuilder;
257
- /**
258
- * Makes the column the primary key.
259
- *
260
- * If you want to specify a composite primary key use the
261
- * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
262
- */
263
- primaryKey(): AlterTableModifyColumnBuilder;
264
- /**
265
- * Adds a foreign key constraint for the column.
266
- *
267
- * If your database engine doesn't support foreign key constraints in the
268
- * column definition (like MySQL 5) you need to call the table level
269
- * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
270
- *
271
- * ### Examples
272
- *
273
- * ```ts
274
- * col.references('person.id')
275
- * ```
276
- */
277
- references(ref: string): AlterTableModifyColumnBuilder;
278
- /**
279
- * Adds an `on delete` constraint for the foreign key column.
280
- *
281
- * If your database engine doesn't support foreign key constraints in the
282
- * column definition (like MySQL 5) you need to call the table level
283
- * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
284
- *
285
- * ### Examples
286
- *
287
- * ```ts
288
- * col.references('person.id').onDelete('cascade')
289
- * ```
290
- */
291
- onDelete(onDelete: OnModifyForeignAction): AlterTableModifyColumnBuilder;
292
- /**
293
- * Adds an `on update` constraint for the foreign key column.
294
- *
295
- * ### Examples
296
- *
297
- * ```ts
298
- * col.references('person.id').onUpdate('cascade')
299
- * ```
300
- */
301
- onUpdate(onUpdate: OnModifyForeignAction): AlterTableModifyColumnBuilder;
302
- /**
303
- * Adds a unique constraint for the column.
304
- */
305
- unique(): AlterTableModifyColumnBuilder;
306
- /**
307
- * Adds a `not null` constraint for the column.
308
- */
309
- notNull(): AlterTableModifyColumnBuilder;
89
+ constructor(props: AlterTableColumnAlteringBuilderProps);
90
+ alterColumn(column: string, alteration: AlterColumnBuilderCallback): AlterTableColumnAlteringBuilder;
91
+ dropColumn(column: string): AlterTableColumnAlteringBuilder;
92
+ renameColumn(column: string, newColumn: string): AlterTableColumnAlteringBuilder;
310
93
  /**
311
- * Adds a `unsigned` modifier for the column.
312
- *
313
- * This only works on some dialects like MySQL.
314
- */
315
- unsigned(): AlterTableModifyColumnBuilder;
316
- /**
317
- * Adds a default value constraint for the column.
318
- *
319
- * ### Examples
320
- *
321
- * ```ts
322
- * db.schema
323
- * .createTable('pet')
324
- * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
325
- * .execute()
326
- * ```
327
- *
328
- * Values passed to `defaultTo` are interpreted as value literals by default. You can define
329
- * an arbitrary SQL expression using the {@link sql} template tag:
330
- *
331
- * ```ts
332
- * import { sql } from 'kysely'
333
- *
334
- * db.schema
335
- * .createTable('pet')
336
- * .addColumn(
337
- * 'number_of_legs',
338
- * 'integer',
339
- * (col) => col.defaultTo(sql`any SQL here`)
340
- * )
341
- * .execute()
342
- * ```
343
- */
344
- defaultTo(value: DefaultValueExpression): AlterTableModifyColumnBuilder;
345
- /**
346
- * Adds a check constraint for the column.
347
- *
348
- * ### Examples
349
- *
350
- * ```ts
351
- * import { sql } from 'kysely'
352
- *
353
- * db.schema
354
- * .createTable('pet')
355
- * .addColumn('number_of_legs', 'integer', (col) =>
356
- * col.check(sql`number_of_legs < 5`)
357
- * )
358
- * .execute()
359
- * ```
360
- */
361
- check(expression: AnyRawBuilder): AlterTableModifyColumnBuilder;
362
- /**
363
- * Makes the column a generated column using a `generated always as` statement.
364
- *
365
- * ### Examples
366
- *
367
- * ```ts
368
- * import { sql } from 'kysely'
369
- *
370
- * db.schema
371
- * .createTable('person')
372
- * .addColumn('full_name', 'varchar(255)',
373
- * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
374
- * )
375
- * .execute()
376
- * ```
377
- */
378
- generatedAlwaysAs(expression: AnyRawBuilder): AlterTableModifyColumnBuilder;
379
- /**
380
- * Adds the `generated always as identity` specifier on supported dialects.
381
- */
382
- generatedAlwaysAsIdentity(): AlterTableModifyColumnBuilder;
383
- /**
384
- * Adds the `generated by default as identity` specifier on supported dialects.
94
+ * See {@link CreateTableBuilder.addColumn}
385
95
  */
386
- generatedByDefaultAsIdentity(): AlterTableModifyColumnBuilder;
96
+ addColumn(columnName: string, dataType: DataTypeExpression, build?: ColumnDefinitionBuilderCallback): AlterTableColumnAlteringBuilder;
387
97
  /**
388
- * Makes a generated column stored instead of virtual. This method can only
389
- * be used with {@link generatedAlwaysAs}
390
- *
391
- * ### Examples
392
- *
393
- * ```ts
394
- * db.schema
395
- * .createTable('person')
396
- * .addColumn('full_name', 'varchar(255)', (col) => col
397
- * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
398
- * .stored()
399
- * )
400
- * .execute()
401
- * ```
98
+ * Creates an `alter table modify column` query. The `modify column` statement
99
+ * is only implemeted by MySQL and oracle AFAIK. On other databases you
100
+ * should use the `alterColumn` method.
402
101
  */
403
- stored(): AlterTableModifyColumnBuilder;
102
+ modifyColumn(columnName: string, dataType: DataTypeExpression, build?: ColumnDefinitionBuilderCallback): AlterTableColumnAlteringBuilder;
404
103
  toOperationNode(): AlterTableNode;
405
104
  compile(): CompiledQuery;
406
105
  execute(): Promise<void>;
407
106
  }
408
- export interface AlterTableModifyColumnBuilderProps extends AlterTableBuilderProps {
409
- readonly columnBuilder: ColumnDefinitionBuilder;
107
+ export interface AlterTableColumnAlteringBuilderProps extends AlterTableBuilderProps {
410
108
  }
411
109
  export declare class AlterTableAddForeignKeyConstraintBuilder implements ForeignKeyConstraintBuilderInterface<AlterTableAddForeignKeyConstraintBuilder>, OperationNodeSource, Compilable {
412
110
  #private;