kysely 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) 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 +65 -280
  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 +2 -2
  144. package/dist/cjs/schema/create-table-builder.d.ts +38 -5
  145. package/dist/cjs/schema/create-table-builder.js +36 -1
  146. package/dist/cjs/schema/create-view-builder.d.ts +3 -2
  147. package/dist/cjs/schema/schema.d.ts +2 -2
  148. package/dist/cjs/schema/schema.js +6 -5
  149. package/dist/cjs/util/compilable.d.ts +2 -2
  150. package/dist/cjs/util/explainable.d.ts +2 -2
  151. package/dist/cjs/util/infer-result.d.ts +46 -0
  152. package/dist/cjs/util/infer-result.js +2 -0
  153. package/dist/cjs/util/log-once.d.ts +5 -0
  154. package/dist/cjs/util/log-once.js +16 -0
  155. package/dist/cjs/util/object-utils.d.ts +1 -0
  156. package/dist/cjs/util/object-utils.js +5 -1
  157. package/dist/cjs/util/type-utils.d.ts +3 -17
  158. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  159. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  160. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  161. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  162. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  163. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  164. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  165. package/dist/esm/driver/database-connection.d.ts +6 -2
  166. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  167. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  168. package/dist/esm/expression/expression.d.ts +100 -0
  169. package/dist/esm/expression/expression.js +12 -0
  170. package/dist/esm/index.d.ts +10 -6
  171. package/dist/esm/index.js +6 -2
  172. package/dist/esm/migration/file-migration-provider.js +5 -3
  173. package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
  174. package/dist/esm/operation-node/aggregate-function-node.js +17 -0
  175. package/dist/esm/operation-node/alias-node.d.ts +3 -11
  176. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  177. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  178. package/dist/esm/operation-node/alter-table-node.js +9 -1
  179. package/dist/esm/operation-node/and-node.d.ts +3 -4
  180. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  181. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  182. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  183. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  184. package/dist/esm/operation-node/column-definition-node.js +16 -0
  185. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  186. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  187. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  188. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  189. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  190. package/dist/esm/operation-node/create-type-node.js +1 -2
  191. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  192. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  193. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  194. package/dist/esm/operation-node/drop-type-node.js +1 -2
  195. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  196. package/dist/esm/operation-node/explain-node.js +1 -1
  197. package/dist/esm/operation-node/from-node.d.ts +3 -4
  198. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  199. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  200. package/dist/esm/operation-node/having-node.d.ts +3 -4
  201. package/dist/esm/operation-node/having-node.js +4 -4
  202. package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
  203. package/dist/esm/operation-node/join-node.d.ts +5 -9
  204. package/dist/esm/operation-node/join-node.js +6 -6
  205. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  206. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  207. package/dist/esm/operation-node/on-node.d.ts +3 -4
  208. package/dist/esm/operation-node/on-node.js +4 -4
  209. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  210. package/dist/esm/operation-node/operation-node-transformer.js +22 -15
  211. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  212. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  213. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  214. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  215. package/dist/esm/operation-node/operator-node.js +2 -4
  216. package/dist/esm/operation-node/or-node.d.ts +3 -4
  217. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  218. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  219. package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
  220. package/dist/esm/operation-node/query-node.d.ts +2 -3
  221. package/dist/esm/operation-node/query-node.js +6 -6
  222. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  223. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  224. package/dist/esm/operation-node/select-query-node.d.ts +5 -6
  225. package/dist/esm/operation-node/select-query-node.js +10 -10
  226. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  227. package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
  228. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  229. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  230. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  231. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  232. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  233. package/dist/esm/operation-node/value-list-node.d.ts +2 -9
  234. package/dist/esm/operation-node/where-node.d.ts +3 -4
  235. package/dist/esm/operation-node/where-node.js +4 -4
  236. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  237. package/dist/esm/parser/binary-operation-parser.js +92 -0
  238. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  239. package/dist/esm/parser/coalesce-parser.js +8 -0
  240. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  241. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  242. package/dist/esm/parser/default-value-parser.js +2 -2
  243. package/dist/esm/parser/expression-parser.d.ts +10 -0
  244. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  245. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  246. package/dist/esm/parser/identifier-parser.js +20 -0
  247. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  248. package/dist/esm/parser/insert-values-parser.js +2 -2
  249. package/dist/esm/parser/join-parser.js +2 -2
  250. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  251. package/dist/esm/parser/reference-parser.d.ts +14 -14
  252. package/dist/esm/parser/reference-parser.js +10 -8
  253. package/dist/esm/parser/select-parser.d.ts +6 -7
  254. package/dist/esm/parser/select-parser.js +2 -2
  255. package/dist/esm/parser/set-operation-parser.d.ts +2 -4
  256. package/dist/esm/parser/table-parser.d.ts +11 -12
  257. package/dist/esm/parser/table-parser.js +2 -2
  258. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  259. package/dist/esm/parser/unary-operation-parser.js +13 -0
  260. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  261. package/dist/esm/parser/value-parser.d.ts +5 -9
  262. package/dist/esm/parser/value-parser.js +4 -4
  263. package/dist/esm/parser/with-parser.d.ts +3 -4
  264. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  265. package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
  266. package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
  267. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  268. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  269. package/dist/esm/query-builder/function-module.d.ts +123 -22
  270. package/dist/esm/query-builder/function-module.js +92 -49
  271. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  272. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  273. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  274. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  275. package/dist/esm/query-builder/insert-result.js +12 -1
  276. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  277. package/dist/esm/query-builder/join-builder.js +10 -9
  278. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  279. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  280. package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
  281. package/dist/esm/query-builder/select-query-builder.js +38 -36
  282. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  283. package/dist/esm/query-builder/update-query-builder.js +19 -16
  284. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  285. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  286. package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
  287. package/dist/esm/query-compiler/default-query-compiler.js +38 -34
  288. package/dist/esm/query-executor/query-executor-base.js +16 -1
  289. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  290. package/dist/esm/raw-builder/raw-builder.js +23 -14
  291. package/dist/esm/raw-builder/sql.d.ts +4 -4
  292. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  293. package/dist/esm/schema/alter-column-builder.js +51 -0
  294. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  295. package/dist/esm/schema/alter-table-builder.js +61 -274
  296. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  297. package/dist/esm/schema/column-definition-builder.js +189 -0
  298. package/dist/esm/schema/create-index-builder.d.ts +2 -2
  299. package/dist/esm/schema/create-table-builder.d.ts +38 -5
  300. package/dist/esm/schema/create-table-builder.js +36 -1
  301. package/dist/esm/schema/create-view-builder.d.ts +3 -2
  302. package/dist/esm/schema/schema.d.ts +2 -2
  303. package/dist/esm/schema/schema.js +6 -5
  304. package/dist/esm/util/compilable.d.ts +2 -2
  305. package/dist/esm/util/explainable.d.ts +2 -2
  306. package/dist/esm/util/infer-result.d.ts +46 -0
  307. package/dist/esm/util/infer-result.js +2 -0
  308. package/dist/esm/util/log-once.d.ts +5 -0
  309. package/dist/esm/util/log-once.js +13 -0
  310. package/dist/esm/util/object-utils.d.ts +1 -0
  311. package/dist/esm/util/object-utils.js +3 -0
  312. package/dist/esm/util/type-utils.d.ts +3 -17
  313. package/package.json +1 -1
  314. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  315. package/dist/cjs/operation-node/filter-node.js +0 -20
  316. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
  317. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
  318. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  319. package/dist/cjs/parser/filter-parser.js +0 -109
  320. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  321. package/dist/esm/operation-node/filter-node.js +0 -18
  322. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
  323. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  324. package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
  325. package/dist/esm/parser/filter-parser.d.ts +0 -24
  326. 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;
@@ -17,12 +17,38 @@ class ColumnDefinitionBuilder {
17
17
  constructor(node) {
18
18
  this.#node = node;
19
19
  }
20
+ /**
21
+ * Adds `auto_increment` or `autoincrement` to the column definition
22
+ * depending on the dialect.
23
+ *
24
+ * Some dialects like PostgreSQL don't support this. On PostgreSQL
25
+ * you can use the `serial` or `bigserial` data type instead.
26
+ */
20
27
  autoIncrement() {
21
28
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));
22
29
  }
30
+ /**
31
+ * Makes the column the primary key.
32
+ *
33
+ * If you want to specify a composite primary key use the
34
+ * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
35
+ */
23
36
  primaryKey() {
24
37
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));
25
38
  }
39
+ /**
40
+ * Adds a foreign key constraint for the column.
41
+ *
42
+ * If your database engine doesn't support foreign key constraints in the
43
+ * column definition (like MySQL 5) you need to call the table level
44
+ * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
45
+ *
46
+ * ### Examples
47
+ *
48
+ * ```ts
49
+ * col.references('person.id')
50
+ * ```
51
+ */
26
52
  references(ref) {
27
53
  const references = (0, reference_parser_js_1.parseStringReference)(ref);
28
54
  if (!reference_node_js_1.ReferenceNode.is(references) || select_all_node_js_1.SelectAllNode.is(references.column)) {
@@ -34,6 +60,19 @@ class ColumnDefinitionBuilder {
34
60
  ]),
35
61
  }));
36
62
  }
63
+ /**
64
+ * Adds an `on delete` constraint for the foreign key column.
65
+ *
66
+ * If your database engine doesn't support foreign key constraints in the
67
+ * column definition (like MySQL 5) you need to call the table level
68
+ * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
69
+ *
70
+ * ### Examples
71
+ *
72
+ * ```ts
73
+ * col.references('person.id').onDelete('cascade')
74
+ * ```
75
+ */
37
76
  onDelete(onDelete) {
38
77
  if (!this.#node.references) {
39
78
  throw new Error('on delete constraint can only be added for foreign keys');
@@ -42,6 +81,15 @@ class ColumnDefinitionBuilder {
42
81
  references: references_node_js_1.ReferencesNode.cloneWithOnDelete(this.#node.references, (0, on_modify_action_parser_js_1.parseOnModifyForeignAction)(onDelete)),
43
82
  }));
44
83
  }
84
+ /**
85
+ * Adds an `on update` constraint for the foreign key column.
86
+ *
87
+ * ### Examples
88
+ *
89
+ * ```ts
90
+ * col.references('person.id').onUpdate('cascade')
91
+ * ```
92
+ */
45
93
  onUpdate(onUpdate) {
46
94
  if (!this.#node.references) {
47
95
  throw new Error('on update constraint can only be added for foreign keys');
@@ -50,40 +98,133 @@ class ColumnDefinitionBuilder {
50
98
  references: references_node_js_1.ReferencesNode.cloneWithOnUpdate(this.#node.references, (0, on_modify_action_parser_js_1.parseOnModifyForeignAction)(onUpdate)),
51
99
  }));
52
100
  }
101
+ /**
102
+ * Adds a unique constraint for the column.
103
+ */
53
104
  unique() {
54
105
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
55
106
  }
107
+ /**
108
+ * Adds a `not null` constraint for the column.
109
+ */
56
110
  notNull() {
57
111
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));
58
112
  }
113
+ /**
114
+ * Adds a `unsigned` modifier for the column.
115
+ *
116
+ * This only works on some dialects like MySQL.
117
+ */
59
118
  unsigned() {
60
119
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));
61
120
  }
121
+ /**
122
+ * Adds a default value constraint for the column.
123
+ *
124
+ * ### Examples
125
+ *
126
+ * ```ts
127
+ * db.schema
128
+ * .createTable('pet')
129
+ * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
130
+ * .execute()
131
+ * ```
132
+ *
133
+ * Values passed to `defaultTo` are interpreted as value literals by default. You can define
134
+ * an arbitrary SQL expression using the {@link sql} template tag:
135
+ *
136
+ * ```ts
137
+ * import { sql } from 'kysely'
138
+ *
139
+ * db.schema
140
+ * .createTable('pet')
141
+ * .addColumn(
142
+ * 'number_of_legs',
143
+ * 'integer',
144
+ * (col) => col.defaultTo(sql`any SQL here`)
145
+ * )
146
+ * .execute()
147
+ * ```
148
+ */
62
149
  defaultTo(value) {
63
150
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
64
151
  defaultTo: default_value_node_js_1.DefaultValueNode.create((0, default_value_parser_js_1.parseDefaultValueExpression)(value)),
65
152
  }));
66
153
  }
154
+ /**
155
+ * Adds a check constraint for the column.
156
+ *
157
+ * ### Examples
158
+ *
159
+ * ```ts
160
+ * import { sql } from 'kysely'
161
+ *
162
+ * db.schema
163
+ * .createTable('pet')
164
+ * .addColumn('number_of_legs', 'integer', (col) =>
165
+ * col.check(sql`number_of_legs < 5`)
166
+ * )
167
+ * .execute()
168
+ * ```
169
+ */
67
170
  check(expression) {
68
171
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
69
172
  check: check_constraint_node_js_1.CheckConstraintNode.create(expression.toOperationNode()),
70
173
  }));
71
174
  }
175
+ /**
176
+ * Makes the column a generated column using a `generated always as` statement.
177
+ *
178
+ * ### Examples
179
+ *
180
+ * ```ts
181
+ * import { sql } from 'kysely'
182
+ *
183
+ * db.schema
184
+ * .createTable('person')
185
+ * .addColumn('full_name', 'varchar(255)',
186
+ * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
187
+ * )
188
+ * .execute()
189
+ * ```
190
+ */
72
191
  generatedAlwaysAs(expression) {
73
192
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
74
193
  generated: generated_node_js_1.GeneratedNode.createWithExpression(expression.toOperationNode()),
75
194
  }));
76
195
  }
196
+ /**
197
+ * Adds the `generated always as identity` specifier on supported dialects.
198
+ */
77
199
  generatedAlwaysAsIdentity() {
78
200
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
79
201
  generated: generated_node_js_1.GeneratedNode.create({ identity: true, always: true }),
80
202
  }));
81
203
  }
204
+ /**
205
+ * Adds the `generated by default as identity` specifier on supported dialects.
206
+ */
82
207
  generatedByDefaultAsIdentity() {
83
208
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
84
209
  generated: generated_node_js_1.GeneratedNode.create({ identity: true, byDefault: true }),
85
210
  }));
86
211
  }
212
+ /**
213
+ * Makes a generated column stored instead of virtual. This method can only
214
+ * be used with {@link generatedAlwaysAs}
215
+ *
216
+ * ### Examples
217
+ *
218
+ * ```ts
219
+ * db.schema
220
+ * .createTable('person')
221
+ * .addColumn('full_name', 'varchar(255)', (col) => col
222
+ * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
223
+ * .stored()
224
+ * )
225
+ * .execute()
226
+ * ```
227
+ */
87
228
  stored() {
88
229
  if (!this.#node.generated) {
89
230
  throw new Error('stored() can only be called after generatedAlwaysAs');
@@ -94,6 +235,54 @@ class ColumnDefinitionBuilder {
94
235
  }),
95
236
  }));
96
237
  }
238
+ /**
239
+ * This can be used to add any additional SQL right after the column's data type.
240
+ *
241
+ * ### Examples
242
+ *
243
+ * ```ts
244
+ * db.schema.createTable('person')
245
+ * .addColumn('id', 'integer', col => col.primaryKey())
246
+ * .addColumn('first_name', 'varchar(36)', col => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull())
247
+ * .execute()
248
+ * ```
249
+ *
250
+ * The generated SQL (MySQL):
251
+ *
252
+ * ```sql
253
+ * create table `person` (
254
+ * `id` integer primary key,
255
+ * `first_name` varchar(36) collate utf8mb4_general_ci not null
256
+ * )
257
+ * ```
258
+ */
259
+ modifyFront(modifier) {
260
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));
261
+ }
262
+ /**
263
+ * This can be used to add any additional SQL to the end of the column definition.
264
+ *
265
+ * ### Examples
266
+ *
267
+ * ```ts
268
+ * db.schema.createTable('person')
269
+ * .addColumn('id', 'integer', col => col.primaryKey())
270
+ * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.literal('it is not polite to ask a woman her age')}`))
271
+ * .execute()
272
+ * ```
273
+ *
274
+ * The generated SQL (MySQL):
275
+ *
276
+ * ```sql
277
+ * create table `person` (
278
+ * `id` integer primary key,
279
+ * `age` integer unsigned not null comment 'it is not polite to ask a woman her age'
280
+ * )
281
+ * ```
282
+ */
283
+ modifyEnd(modifier) {
284
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));
285
+ }
97
286
  toOperationNode() {
98
287
  return this.#node;
99
288
  }
@@ -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
  */
@@ -7,7 +7,7 @@ import { ColumnDefinitionBuilder } from './column-definition-builder.js';
7
7
  import { QueryId } from '../util/query-id.js';
8
8
  import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
9
9
  import { DataTypeExpression } from '../parser/data-type-parser.js';
10
- import { AnyRawBuilder } from '../util/type-utils.js';
10
+ import { Expression } from '../expression/expression.js';
11
11
  /**
12
12
  * This builder can be used to create a `create table` query.
13
13
  */
@@ -118,7 +118,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
118
118
  * addCheckConstraint('check_legs', sql`number_of_legs < 5`)
119
119
  * ```
120
120
  */
121
- addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): CreateTableBuilder<TB, C>;
121
+ addCheckConstraint(constraintName: string, checkExpression: Expression<any>): CreateTableBuilder<TB, C>;
122
122
  /**
123
123
  * Adds a foreign key constraint.
124
124
  *
@@ -159,7 +159,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
159
159
  * ```ts
160
160
  * db.schema.createTable('person')
161
161
  * .modifyFront(sql`global temporary`)
162
- * .addColumn('id', 'integer', col => col => primaryKey())
162
+ * .addColumn('id', 'integer', col => col.primaryKey())
163
163
  * .addColumn('first_name', 'varchar(64)', col => col.notNull())
164
164
  * .addColumn('last_name', 'varchar(64), col => col.notNull())
165
165
  * .execute()
@@ -175,7 +175,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
175
175
  * )
176
176
  * ```
177
177
  */
178
- modifyFront(modifier: AnyRawBuilder): CreateTableBuilder<TB, C>;
178
+ modifyFront(modifier: Expression<any>): CreateTableBuilder<TB, C>;
179
179
  /**
180
180
  * This can be used to add any additional SQL to the end of the query.
181
181
  *
@@ -202,7 +202,40 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
202
202
  * ) collate utf8_unicode_ci
203
203
  * ```
204
204
  */
205
- modifyEnd(modifier: AnyRawBuilder): CreateTableBuilder<TB, C>;
205
+ modifyEnd(modifier: Expression<any>): CreateTableBuilder<TB, C>;
206
+ /**
207
+ * Calls the given function passing `this` as the only argument.
208
+ *
209
+ * ### Examples
210
+ *
211
+ * ```ts
212
+ * db.schema
213
+ * .createTable('test')
214
+ * .call((builder) => builder.addColumn('id', 'integer'))
215
+ * .execute()
216
+ * ```
217
+ *
218
+ * ```ts
219
+ * const addDefaultColumns = <T extends string, C extends string = never>(
220
+ * builder: CreateTableBuilder<T, C>
221
+ * ) => {
222
+ * return builder
223
+ * .addColumn('id', 'integer', (col) => col.notNull())
224
+ * .addColumn('created_at', 'date', (col) =>
225
+ * col.notNull().defaultTo(sql`now()`)
226
+ * )
227
+ * .addColumn('updated_at', 'date', (col) =>
228
+ * col.notNull().defaultTo(sql`now()`)
229
+ * )
230
+ * }
231
+ *
232
+ * db.schema
233
+ * .createTable('test')
234
+ * .call(addDefaultColumns)
235
+ * .execute()
236
+ * ```
237
+ */
238
+ call<T>(func: (qb: this) => T): T;
206
239
  toOperationNode(): CreateTableNode;
207
240
  compile(): CompiledQuery;
208
241
  execute(): Promise<void>;