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,9 +1,11 @@
1
1
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
2
2
  import { OnModifyForeignAction } from '../operation-node/references-node.js';
3
3
  import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
4
- import { AnyRawBuilder } from '../util/type-utils.js';
5
4
  import { DefaultValueExpression } from '../parser/default-value-parser.js';
6
- export interface ColumnDefinitionBuilderInterface {
5
+ import { Expression } from '../expression/expression.js';
6
+ export declare class ColumnDefinitionBuilder implements OperationNodeSource {
7
+ #private;
8
+ constructor(node: ColumnDefinitionNode);
7
9
  /**
8
10
  * Adds `auto_increment` or `autoincrement` to the column definition
9
11
  * depending on the dialect.
@@ -11,14 +13,14 @@ export interface ColumnDefinitionBuilderInterface {
11
13
  * Some dialects like PostgreSQL don't support this. On PostgreSQL
12
14
  * you can use the `serial` or `bigserial` data type instead.
13
15
  */
14
- autoIncrement(): ColumnDefinitionBuilderInterface;
16
+ autoIncrement(): ColumnDefinitionBuilder;
15
17
  /**
16
18
  * Makes the column the primary key.
17
19
  *
18
20
  * If you want to specify a composite primary key use the
19
21
  * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
20
22
  */
21
- primaryKey(): ColumnDefinitionBuilderInterface;
23
+ primaryKey(): ColumnDefinitionBuilder;
22
24
  /**
23
25
  * Adds a foreign key constraint for the column.
24
26
  *
@@ -32,7 +34,7 @@ export interface ColumnDefinitionBuilderInterface {
32
34
  * col.references('person.id')
33
35
  * ```
34
36
  */
35
- references(ref: string): ColumnDefinitionBuilderInterface;
37
+ references(ref: string): ColumnDefinitionBuilder;
36
38
  /**
37
39
  * Adds an `on delete` constraint for the foreign key column.
38
40
  *
@@ -46,7 +48,7 @@ export interface ColumnDefinitionBuilderInterface {
46
48
  * col.references('person.id').onDelete('cascade')
47
49
  * ```
48
50
  */
49
- onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilderInterface;
51
+ onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
50
52
  /**
51
53
  * Adds an `on update` constraint for the foreign key column.
52
54
  *
@@ -56,21 +58,21 @@ export interface ColumnDefinitionBuilderInterface {
56
58
  * col.references('person.id').onUpdate('cascade')
57
59
  * ```
58
60
  */
59
- onUpdate(onUpdate: OnModifyForeignAction): ColumnDefinitionBuilderInterface;
61
+ onUpdate(onUpdate: OnModifyForeignAction): ColumnDefinitionBuilder;
60
62
  /**
61
63
  * Adds a unique constraint for the column.
62
64
  */
63
- unique(): ColumnDefinitionBuilderInterface;
65
+ unique(): ColumnDefinitionBuilder;
64
66
  /**
65
67
  * Adds a `not null` constraint for the column.
66
68
  */
67
- notNull(): ColumnDefinitionBuilderInterface;
69
+ notNull(): ColumnDefinitionBuilder;
68
70
  /**
69
71
  * Adds a `unsigned` modifier for the column.
70
72
  *
71
73
  * This only works on some dialects like MySQL.
72
74
  */
73
- unsigned(): ColumnDefinitionBuilderInterface;
75
+ unsigned(): ColumnDefinitionBuilder;
74
76
  /**
75
77
  * Adds a default value constraint for the column.
76
78
  *
@@ -99,7 +101,7 @@ export interface ColumnDefinitionBuilderInterface {
99
101
  * .execute()
100
102
  * ```
101
103
  */
102
- defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilderInterface;
104
+ defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
103
105
  /**
104
106
  * Adds a check constraint for the column.
105
107
  *
@@ -116,7 +118,7 @@ export interface ColumnDefinitionBuilderInterface {
116
118
  * .execute()
117
119
  * ```
118
120
  */
119
- check(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
121
+ check(expression: Expression<any>): ColumnDefinitionBuilder;
120
122
  /**
121
123
  * Makes the column a generated column using a `generated always as` statement.
122
124
  *
@@ -133,15 +135,15 @@ export interface ColumnDefinitionBuilderInterface {
133
135
  * .execute()
134
136
  * ```
135
137
  */
136
- generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
138
+ generatedAlwaysAs(expression: Expression<any>): ColumnDefinitionBuilder;
137
139
  /**
138
140
  * Adds the `generated always as identity` specifier on supported dialects.
139
141
  */
140
- generatedAlwaysAsIdentity(): ColumnDefinitionBuilderInterface;
142
+ generatedAlwaysAsIdentity(): ColumnDefinitionBuilder;
141
143
  /**
142
144
  * Adds the `generated by default as identity` specifier on supported dialects.
143
145
  */
144
- generatedByDefaultAsIdentity(): ColumnDefinitionBuilderInterface;
146
+ generatedByDefaultAsIdentity(): ColumnDefinitionBuilder;
145
147
  /**
146
148
  * Makes a generated column stored instead of virtual. This method can only
147
149
  * be used with {@link generatedAlwaysAs}
@@ -158,165 +160,51 @@ export interface ColumnDefinitionBuilderInterface {
158
160
  * .execute()
159
161
  * ```
160
162
  */
161
- stored(): ColumnDefinitionBuilderInterface;
162
- }
163
- export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderInterface, OperationNodeSource {
164
- #private;
165
- constructor(node: ColumnDefinitionNode);
166
- /**
167
- * Adds `auto_increment` or `autoincrement` to the column definition
168
- * depending on the dialect.
169
- *
170
- * Some dialects like PostgreSQL don't support this. On PostgreSQL
171
- * you can use the `serial` or `bigserial` data type instead.
172
- */
173
- autoIncrement(): ColumnDefinitionBuilder;
174
- /**
175
- * Makes the column the primary key.
176
- *
177
- * If you want to specify a composite primary key use the
178
- * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
179
- */
180
- primaryKey(): ColumnDefinitionBuilder;
181
- /**
182
- * Adds a foreign key constraint for the column.
183
- *
184
- * If your database engine doesn't support foreign key constraints in the
185
- * column definition (like MySQL 5) you need to call the table level
186
- * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
187
- *
188
- * ### Examples
189
- *
190
- * ```ts
191
- * col.references('person.id')
192
- * ```
193
- */
194
- references(ref: string): ColumnDefinitionBuilder;
195
- /**
196
- * Adds an `on delete` constraint for the foreign key column.
197
- *
198
- * If your database engine doesn't support foreign key constraints in the
199
- * column definition (like MySQL 5) you need to call the table level
200
- * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
201
- *
202
- * ### Examples
203
- *
204
- * ```ts
205
- * col.references('person.id').onDelete('cascade')
206
- * ```
207
- */
208
- onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
209
- /**
210
- * Adds an `on update` constraint for the foreign key column.
211
- *
212
- * ### Examples
213
- *
214
- * ```ts
215
- * col.references('person.id').onUpdate('cascade')
216
- * ```
217
- */
218
- onUpdate(onUpdate: OnModifyForeignAction): ColumnDefinitionBuilder;
219
- /**
220
- * Adds a unique constraint for the column.
221
- */
222
- unique(): ColumnDefinitionBuilder;
223
- /**
224
- * Adds a `not null` constraint for the column.
225
- */
226
- notNull(): ColumnDefinitionBuilder;
227
- /**
228
- * Adds a `unsigned` modifier for the column.
229
- *
230
- * This only works on some dialects like MySQL.
231
- */
232
- unsigned(): ColumnDefinitionBuilder;
163
+ stored(): ColumnDefinitionBuilder;
233
164
  /**
234
- * Adds a default value constraint for the column.
165
+ * This can be used to add any additional SQL right after the column's data type.
235
166
  *
236
167
  * ### Examples
237
168
  *
238
169
  * ```ts
239
- * db.schema
240
- * .createTable('pet')
241
- * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
242
- * .execute()
170
+ * db.schema.createTable('person')
171
+ * .addColumn('id', 'integer', col => col.primaryKey())
172
+ * .addColumn('first_name', 'varchar(36)', col => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull())
173
+ * .execute()
243
174
  * ```
244
175
  *
245
- * Values passed to `defaultTo` are interpreted as value literals by default. You can define
246
- * an arbitrary SQL expression using the {@link sql} template tag:
247
- *
248
- * ```ts
249
- * import { sql } from 'kysely'
176
+ * The generated SQL (MySQL):
250
177
  *
251
- * db.schema
252
- * .createTable('pet')
253
- * .addColumn(
254
- * 'number_of_legs',
255
- * 'integer',
256
- * (col) => col.defaultTo(sql`any SQL here`)
257
- * )
258
- * .execute()
178
+ * ```sql
179
+ * create table `person` (
180
+ * `id` integer primary key,
181
+ * `first_name` varchar(36) collate utf8mb4_general_ci not null
182
+ * )
259
183
  * ```
260
184
  */
261
- defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
185
+ modifyFront(modifier: Expression<any>): ColumnDefinitionBuilder;
262
186
  /**
263
- * Adds a check constraint for the column.
187
+ * This can be used to add any additional SQL to the end of the column definition.
264
188
  *
265
189
  * ### Examples
266
190
  *
267
191
  * ```ts
268
- * import { sql } from 'kysely'
269
- *
270
- * db.schema
271
- * .createTable('pet')
272
- * .addColumn('number_of_legs', 'integer', (col) =>
273
- * col.check(sql`number_of_legs < 5`)
274
- * )
275
- * .execute()
192
+ * db.schema.createTable('person')
193
+ * .addColumn('id', 'integer', col => col.primaryKey())
194
+ * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.literal('it is not polite to ask a woman her age')}`))
195
+ * .execute()
276
196
  * ```
277
- */
278
- check(expression: AnyRawBuilder): ColumnDefinitionBuilder;
279
- /**
280
- * Makes the column a generated column using a `generated always as` statement.
281
197
  *
282
- * ### Examples
283
- *
284
- * ```ts
285
- * import { sql } from 'kysely'
198
+ * The generated SQL (MySQL):
286
199
  *
287
- * db.schema
288
- * .createTable('person')
289
- * .addColumn('full_name', 'varchar(255)',
290
- * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
291
- * )
292
- * .execute()
200
+ * ```sql
201
+ * create table `person` (
202
+ * `id` integer primary key,
203
+ * `age` integer unsigned not null comment 'it is not polite to ask a woman her age'
204
+ * )
293
205
  * ```
294
206
  */
295
- generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilder;
296
- /**
297
- * Adds the `generated always as identity` specifier on supported dialects.
298
- */
299
- generatedAlwaysAsIdentity(): ColumnDefinitionBuilder;
300
- /**
301
- * Adds the `generated by default as identity` specifier on supported dialects.
302
- */
303
- generatedByDefaultAsIdentity(): ColumnDefinitionBuilder;
304
- /**
305
- * Makes a generated column stored instead of virtual. This method can only
306
- * be used with {@link generatedAlwaysAs}
307
- *
308
- * ### Examples
309
- *
310
- * ```ts
311
- * db.schema
312
- * .createTable('person')
313
- * .addColumn('full_name', 'varchar(255)', (col) => col
314
- * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
315
- * .stored()
316
- * )
317
- * .execute()
318
- * ```
319
- */
320
- stored(): ColumnDefinitionBuilder;
207
+ modifyEnd(modifier: Expression<any>): ColumnDefinitionBuilder;
321
208
  toOperationNode(): ColumnDefinitionNode;
322
209
  }
210
+ export declare type ColumnDefinitionBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
@@ -15,12 +15,38 @@ export class ColumnDefinitionBuilder {
15
15
  constructor(node) {
16
16
  this.#node = node;
17
17
  }
18
+ /**
19
+ * Adds `auto_increment` or `autoincrement` to the column definition
20
+ * depending on the dialect.
21
+ *
22
+ * Some dialects like PostgreSQL don't support this. On PostgreSQL
23
+ * you can use the `serial` or `bigserial` data type instead.
24
+ */
18
25
  autoIncrement() {
19
26
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));
20
27
  }
28
+ /**
29
+ * Makes the column the primary key.
30
+ *
31
+ * If you want to specify a composite primary key use the
32
+ * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
33
+ */
21
34
  primaryKey() {
22
35
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));
23
36
  }
37
+ /**
38
+ * Adds a foreign key constraint for the column.
39
+ *
40
+ * If your database engine doesn't support foreign key constraints in the
41
+ * column definition (like MySQL 5) you need to call the table level
42
+ * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
43
+ *
44
+ * ### Examples
45
+ *
46
+ * ```ts
47
+ * col.references('person.id')
48
+ * ```
49
+ */
24
50
  references(ref) {
25
51
  const references = parseStringReference(ref);
26
52
  if (!ReferenceNode.is(references) || SelectAllNode.is(references.column)) {
@@ -32,6 +58,19 @@ export class ColumnDefinitionBuilder {
32
58
  ]),
33
59
  }));
34
60
  }
61
+ /**
62
+ * Adds an `on delete` constraint for the foreign key column.
63
+ *
64
+ * If your database engine doesn't support foreign key constraints in the
65
+ * column definition (like MySQL 5) you need to call the table level
66
+ * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
67
+ *
68
+ * ### Examples
69
+ *
70
+ * ```ts
71
+ * col.references('person.id').onDelete('cascade')
72
+ * ```
73
+ */
35
74
  onDelete(onDelete) {
36
75
  if (!this.#node.references) {
37
76
  throw new Error('on delete constraint can only be added for foreign keys');
@@ -40,6 +79,15 @@ export class ColumnDefinitionBuilder {
40
79
  references: ReferencesNode.cloneWithOnDelete(this.#node.references, parseOnModifyForeignAction(onDelete)),
41
80
  }));
42
81
  }
82
+ /**
83
+ * Adds an `on update` constraint for the foreign key column.
84
+ *
85
+ * ### Examples
86
+ *
87
+ * ```ts
88
+ * col.references('person.id').onUpdate('cascade')
89
+ * ```
90
+ */
43
91
  onUpdate(onUpdate) {
44
92
  if (!this.#node.references) {
45
93
  throw new Error('on update constraint can only be added for foreign keys');
@@ -48,40 +96,133 @@ export class ColumnDefinitionBuilder {
48
96
  references: ReferencesNode.cloneWithOnUpdate(this.#node.references, parseOnModifyForeignAction(onUpdate)),
49
97
  }));
50
98
  }
99
+ /**
100
+ * Adds a unique constraint for the column.
101
+ */
51
102
  unique() {
52
103
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
53
104
  }
105
+ /**
106
+ * Adds a `not null` constraint for the column.
107
+ */
54
108
  notNull() {
55
109
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));
56
110
  }
111
+ /**
112
+ * Adds a `unsigned` modifier for the column.
113
+ *
114
+ * This only works on some dialects like MySQL.
115
+ */
57
116
  unsigned() {
58
117
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));
59
118
  }
119
+ /**
120
+ * Adds a default value constraint for the column.
121
+ *
122
+ * ### Examples
123
+ *
124
+ * ```ts
125
+ * db.schema
126
+ * .createTable('pet')
127
+ * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
128
+ * .execute()
129
+ * ```
130
+ *
131
+ * Values passed to `defaultTo` are interpreted as value literals by default. You can define
132
+ * an arbitrary SQL expression using the {@link sql} template tag:
133
+ *
134
+ * ```ts
135
+ * import { sql } from 'kysely'
136
+ *
137
+ * db.schema
138
+ * .createTable('pet')
139
+ * .addColumn(
140
+ * 'number_of_legs',
141
+ * 'integer',
142
+ * (col) => col.defaultTo(sql`any SQL here`)
143
+ * )
144
+ * .execute()
145
+ * ```
146
+ */
60
147
  defaultTo(value) {
61
148
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
62
149
  defaultTo: DefaultValueNode.create(parseDefaultValueExpression(value)),
63
150
  }));
64
151
  }
152
+ /**
153
+ * Adds a check constraint for the column.
154
+ *
155
+ * ### Examples
156
+ *
157
+ * ```ts
158
+ * import { sql } from 'kysely'
159
+ *
160
+ * db.schema
161
+ * .createTable('pet')
162
+ * .addColumn('number_of_legs', 'integer', (col) =>
163
+ * col.check(sql`number_of_legs < 5`)
164
+ * )
165
+ * .execute()
166
+ * ```
167
+ */
65
168
  check(expression) {
66
169
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
67
170
  check: CheckConstraintNode.create(expression.toOperationNode()),
68
171
  }));
69
172
  }
173
+ /**
174
+ * Makes the column a generated column using a `generated always as` statement.
175
+ *
176
+ * ### Examples
177
+ *
178
+ * ```ts
179
+ * import { sql } from 'kysely'
180
+ *
181
+ * db.schema
182
+ * .createTable('person')
183
+ * .addColumn('full_name', 'varchar(255)',
184
+ * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
185
+ * )
186
+ * .execute()
187
+ * ```
188
+ */
70
189
  generatedAlwaysAs(expression) {
71
190
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
72
191
  generated: GeneratedNode.createWithExpression(expression.toOperationNode()),
73
192
  }));
74
193
  }
194
+ /**
195
+ * Adds the `generated always as identity` specifier on supported dialects.
196
+ */
75
197
  generatedAlwaysAsIdentity() {
76
198
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
77
199
  generated: GeneratedNode.create({ identity: true, always: true }),
78
200
  }));
79
201
  }
202
+ /**
203
+ * Adds the `generated by default as identity` specifier on supported dialects.
204
+ */
80
205
  generatedByDefaultAsIdentity() {
81
206
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
82
207
  generated: GeneratedNode.create({ identity: true, byDefault: true }),
83
208
  }));
84
209
  }
210
+ /**
211
+ * Makes a generated column stored instead of virtual. This method can only
212
+ * be used with {@link generatedAlwaysAs}
213
+ *
214
+ * ### Examples
215
+ *
216
+ * ```ts
217
+ * db.schema
218
+ * .createTable('person')
219
+ * .addColumn('full_name', 'varchar(255)', (col) => col
220
+ * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
221
+ * .stored()
222
+ * )
223
+ * .execute()
224
+ * ```
225
+ */
85
226
  stored() {
86
227
  if (!this.#node.generated) {
87
228
  throw new Error('stored() can only be called after generatedAlwaysAs');
@@ -92,6 +233,54 @@ export class ColumnDefinitionBuilder {
92
233
  }),
93
234
  }));
94
235
  }
236
+ /**
237
+ * This can be used to add any additional SQL right after the column's data type.
238
+ *
239
+ * ### Examples
240
+ *
241
+ * ```ts
242
+ * db.schema.createTable('person')
243
+ * .addColumn('id', 'integer', col => col.primaryKey())
244
+ * .addColumn('first_name', 'varchar(36)', col => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull())
245
+ * .execute()
246
+ * ```
247
+ *
248
+ * The generated SQL (MySQL):
249
+ *
250
+ * ```sql
251
+ * create table `person` (
252
+ * `id` integer primary key,
253
+ * `first_name` varchar(36) collate utf8mb4_general_ci not null
254
+ * )
255
+ * ```
256
+ */
257
+ modifyFront(modifier) {
258
+ return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));
259
+ }
260
+ /**
261
+ * This can be used to add any additional SQL to the end of the column definition.
262
+ *
263
+ * ### Examples
264
+ *
265
+ * ```ts
266
+ * db.schema.createTable('person')
267
+ * .addColumn('id', 'integer', col => col.primaryKey())
268
+ * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.literal('it is not polite to ask a woman her age')}`))
269
+ * .execute()
270
+ * ```
271
+ *
272
+ * The generated SQL (MySQL):
273
+ *
274
+ * ```sql
275
+ * create table `person` (
276
+ * `id` integer primary key,
277
+ * `age` integer unsigned not null comment 'it is not polite to ask a woman her age'
278
+ * )
279
+ * ```
280
+ */
281
+ modifyEnd(modifier) {
282
+ return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));
283
+ }
95
284
  toOperationNode() {
96
285
  return this.#node;
97
286
  }
@@ -4,7 +4,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
4
  import { Compilable } from '../util/compilable.js';
5
5
  import { QueryExecutor } from '../query-executor/query-executor.js';
6
6
  import { QueryId } from '../util/query-id.js';
7
- import { AnyRawBuilder } from '../util/type-utils.js';
7
+ import { Expression } from '../expression/expression.js';
8
8
  export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
9
9
  #private;
10
10
  constructor(props: CreateIndexBuilderProps);
@@ -43,7 +43,7 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
43
43
  * .execute()
44
44
  * ```
45
45
  */
46
- expression(expression: AnyRawBuilder): CreateIndexBuilder;
46
+ expression(expression: Expression<any>): CreateIndexBuilder;
47
47
  /**
48
48
  * Specifies the index type.
49
49
  */
@@ -56,5 +56,5 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
56
56
  export interface CreateIndexBuilderProps {
57
57
  readonly queryId: QueryId;
58
58
  readonly executor: QueryExecutor;
59
- readonly createIndexNode: CreateIndexNode;
59
+ readonly node: CreateIndexNode;
60
60
  }
@@ -17,7 +17,7 @@ export class CreateIndexBuilder {
17
17
  unique() {
18
18
  return new CreateIndexBuilder({
19
19
  ...this.#props,
20
- createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
20
+ node: CreateIndexNode.cloneWith(this.#props.node, {
21
21
  unique: true,
22
22
  }),
23
23
  });
@@ -28,7 +28,7 @@ export class CreateIndexBuilder {
28
28
  on(table) {
29
29
  return new CreateIndexBuilder({
30
30
  ...this.#props,
31
- createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
31
+ node: CreateIndexNode.cloneWith(this.#props.node, {
32
32
  table: parseTable(table),
33
33
  }),
34
34
  });
@@ -41,7 +41,7 @@ export class CreateIndexBuilder {
41
41
  column(column) {
42
42
  return new CreateIndexBuilder({
43
43
  ...this.#props,
44
- createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
44
+ node: CreateIndexNode.cloneWith(this.#props.node, {
45
45
  expression: parseColumnName(column),
46
46
  }),
47
47
  });
@@ -54,7 +54,7 @@ export class CreateIndexBuilder {
54
54
  columns(columns) {
55
55
  return new CreateIndexBuilder({
56
56
  ...this.#props,
57
- createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
57
+ node: CreateIndexNode.cloneWith(this.#props.node, {
58
58
  expression: ListNode.create(columns.map(parseColumnName)),
59
59
  }),
60
60
  });
@@ -77,7 +77,7 @@ export class CreateIndexBuilder {
77
77
  expression(expression) {
78
78
  return new CreateIndexBuilder({
79
79
  ...this.#props,
80
- createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
80
+ node: CreateIndexNode.cloneWith(this.#props.node, {
81
81
  expression: expression.toOperationNode(),
82
82
  }),
83
83
  });
@@ -85,13 +85,13 @@ export class CreateIndexBuilder {
85
85
  using(indexType) {
86
86
  return new CreateIndexBuilder({
87
87
  ...this.#props,
88
- createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
88
+ node: CreateIndexNode.cloneWith(this.#props.node, {
89
89
  using: RawNode.createWithSql(indexType),
90
90
  }),
91
91
  });
92
92
  }
93
93
  toOperationNode() {
94
- return this.#props.executor.transformQuery(this.#props.createIndexNode, this.#props.queryId);
94
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
95
95
  }
96
96
  compile() {
97
97
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
@@ -15,5 +15,5 @@ export declare class CreateSchemaBuilder implements OperationNodeSource, Compila
15
15
  export interface CreateSchemaBuilderProps {
16
16
  readonly queryId: QueryId;
17
17
  readonly executor: QueryExecutor;
18
- readonly createSchemaNode: CreateSchemaNode;
18
+ readonly node: CreateSchemaNode;
19
19
  }
@@ -10,11 +10,11 @@ export class CreateSchemaBuilder {
10
10
  ifNotExists() {
11
11
  return new CreateSchemaBuilder({
12
12
  ...this.#props,
13
- createSchemaNode: CreateSchemaNode.cloneWith(this.#props.createSchemaNode, { ifNotExists: true }),
13
+ node: CreateSchemaNode.cloneWith(this.#props.node, { ifNotExists: true }),
14
14
  });
15
15
  }
16
16
  toOperationNode() {
17
- return this.#props.executor.transformQuery(this.#props.createSchemaNode, this.#props.queryId);
17
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
18
18
  }
19
19
  compile() {
20
20
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);