kysely 0.27.6 → 0.28.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 (363) hide show
  1. package/README.md +169 -1
  2. package/deno.check.d.ts +7 -0
  3. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  4. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
  5. package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
  6. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  7. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
  8. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
  9. package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
  10. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
  11. package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
  12. package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
  13. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
  15. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
  17. package/dist/cjs/driver/database-connection.d.ts +0 -4
  18. package/dist/cjs/driver/driver.d.ts +17 -0
  19. package/dist/cjs/driver/driver.js +13 -1
  20. package/dist/cjs/driver/dummy-driver.d.ts +3 -0
  21. package/dist/cjs/driver/dummy-driver.js +9 -0
  22. package/dist/cjs/driver/runtime-driver.d.ts +4 -0
  23. package/dist/cjs/driver/runtime-driver.js +43 -3
  24. package/dist/cjs/expression/expression-builder.d.ts +7 -10
  25. package/dist/cjs/helpers/postgres.d.ts +48 -0
  26. package/dist/cjs/helpers/postgres.js +50 -0
  27. package/dist/cjs/index.d.ts +13 -2
  28. package/dist/cjs/index.js +13 -2
  29. package/dist/cjs/kysely.d.ts +339 -2
  30. package/dist/cjs/kysely.js +465 -11
  31. package/dist/cjs/migration/migrator.d.ts +8 -0
  32. package/dist/cjs/migration/migrator.js +1 -1
  33. package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
  34. package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
  35. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
  36. package/dist/cjs/operation-node/collate-node.d.ts +13 -0
  37. package/dist/cjs/operation-node/collate-node.js +19 -0
  38. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/create-type-node.js +1 -1
  41. package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
  42. package/dist/cjs/operation-node/delete-query-node.js +11 -15
  43. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
  44. package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
  45. package/dist/cjs/operation-node/join-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
  47. package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
  48. package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
  49. package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
  50. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  51. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
  53. package/dist/cjs/operation-node/or-action-node.js +18 -0
  54. package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
  55. package/dist/cjs/operation-node/order-by-item-node.js +6 -0
  56. package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
  57. package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  58. package/dist/cjs/operation-node/query-node.d.ts +7 -0
  59. package/dist/cjs/operation-node/query-node.js +15 -0
  60. package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
  61. package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
  62. package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
  63. package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
  64. package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
  65. package/dist/cjs/operation-node/select-query-node.js +11 -15
  66. package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
  67. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  68. package/dist/cjs/operation-node/update-query-node.js +5 -2
  69. package/dist/cjs/parser/collate-parser.d.ts +1 -0
  70. package/dist/cjs/parser/collate-parser.js +2 -0
  71. package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
  72. package/dist/cjs/parser/delete-from-parser.js +2 -0
  73. package/dist/cjs/parser/join-parser.d.ts +1 -1
  74. package/dist/cjs/parser/join-parser.js +7 -1
  75. package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
  76. package/dist/cjs/parser/merge-into-parser.js +2 -0
  77. package/dist/cjs/parser/order-by-parser.d.ts +18 -5
  78. package/dist/cjs/parser/order-by-parser.js +24 -14
  79. package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
  80. package/dist/cjs/parser/savepoint-parser.js +11 -0
  81. package/dist/cjs/parser/select-from-parser.d.ts +4 -0
  82. package/dist/cjs/parser/select-from-parser.js +2 -0
  83. package/dist/cjs/parser/table-parser.d.ts +2 -5
  84. package/dist/cjs/parser/update-parser.d.ts +5 -0
  85. package/dist/cjs/parser/update-parser.js +2 -0
  86. package/dist/cjs/parser/update-set-parser.d.ts +7 -4
  87. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  88. package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  89. package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
  90. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  91. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  92. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  93. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  94. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
  95. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  96. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
  97. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  98. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
  99. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
  100. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  101. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
  102. package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
  103. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +6 -5
  104. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +29 -24
  105. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
  106. package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
  107. package/dist/cjs/query-builder/cte-builder.js +0 -2
  108. package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
  109. package/dist/cjs/query-builder/delete-query-builder.js +12 -78
  110. package/dist/cjs/query-builder/function-module.d.ts +31 -4
  111. package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
  112. package/dist/cjs/query-builder/insert-query-builder.js +197 -10
  113. package/dist/cjs/query-builder/join-builder.js +0 -2
  114. package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
  115. package/dist/cjs/query-builder/merge-query-builder.js +28 -7
  116. package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
  117. package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
  118. package/dist/cjs/query-builder/order-by-interface.js +2 -0
  119. package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
  120. package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
  121. package/dist/cjs/query-builder/over-builder.d.ts +43 -6
  122. package/dist/cjs/query-builder/over-builder.js +8 -25
  123. package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
  124. package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
  125. package/dist/cjs/query-builder/select-query-builder.js +26 -26
  126. package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
  127. package/dist/cjs/query-builder/update-query-builder.js +17 -15
  128. package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
  129. package/dist/cjs/query-compiler/compiled-query.js +2 -0
  130. package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
  131. package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
  132. package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
  133. package/dist/cjs/query-creator.d.ts +23 -25
  134. package/dist/cjs/query-creator.js +280 -8
  135. package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
  136. package/dist/cjs/query-executor/default-query-executor.js +2 -2
  137. package/dist/cjs/query-executor/query-executor-base.js +7 -25
  138. package/dist/cjs/raw-builder/raw-builder.js +0 -3
  139. package/dist/cjs/raw-builder/sql.d.ts +3 -3
  140. package/dist/cjs/raw-builder/sql.js +1 -1
  141. package/dist/cjs/schema/alter-column-builder.js +0 -3
  142. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  143. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  144. package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
  145. package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
  146. package/dist/cjs/schema/alter-table-builder.js +21 -10
  147. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
  148. package/dist/cjs/schema/alter-table-executor.js +0 -2
  149. package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
  150. package/dist/cjs/schema/check-constraint-builder.js +20 -0
  151. package/dist/cjs/schema/column-definition-builder.js +0 -2
  152. package/dist/cjs/schema/create-index-builder.js +1 -3
  153. package/dist/cjs/schema/create-schema-builder.js +0 -2
  154. package/dist/cjs/schema/create-table-builder.d.ts +5 -4
  155. package/dist/cjs/schema/create-table-builder.js +9 -7
  156. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  157. package/dist/cjs/schema/create-type-builder.js +0 -2
  158. package/dist/cjs/schema/create-view-builder.js +0 -2
  159. package/dist/cjs/schema/drop-index-builder.js +0 -2
  160. package/dist/cjs/schema/drop-schema-builder.js +0 -2
  161. package/dist/cjs/schema/drop-table-builder.js +0 -2
  162. package/dist/cjs/schema/drop-type-builder.js +0 -2
  163. package/dist/cjs/schema/drop-view-builder.js +0 -2
  164. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
  165. package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
  166. package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
  167. package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
  168. package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
  169. package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
  170. package/dist/cjs/schema/schema.d.ts +14 -0
  171. package/dist/cjs/schema/schema.js +21 -0
  172. package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
  173. package/dist/cjs/schema/unique-constraint-builder.js +26 -5
  174. package/dist/cjs/util/infer-result.d.ts +1 -1
  175. package/dist/cjs/util/log.d.ts +1 -0
  176. package/dist/cjs/util/log.js +3 -2
  177. package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
  178. package/dist/cjs/util/provide-controlled-connection.js +24 -0
  179. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  180. package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
  181. package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
  182. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  183. package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
  184. package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
  185. package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
  186. package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
  187. package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
  188. package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
  189. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
  190. package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
  191. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  192. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
  193. package/dist/esm/driver/database-connection.d.ts +0 -4
  194. package/dist/esm/driver/driver.d.ts +17 -0
  195. package/dist/esm/driver/driver.js +11 -0
  196. package/dist/esm/driver/dummy-driver.d.ts +3 -0
  197. package/dist/esm/driver/dummy-driver.js +9 -0
  198. package/dist/esm/driver/runtime-driver.d.ts +4 -0
  199. package/dist/esm/driver/runtime-driver.js +43 -3
  200. package/dist/esm/expression/expression-builder.d.ts +7 -10
  201. package/dist/esm/helpers/postgres.d.ts +48 -0
  202. package/dist/esm/helpers/postgres.js +49 -0
  203. package/dist/esm/index.d.ts +13 -2
  204. package/dist/esm/index.js +11 -1
  205. package/dist/esm/kysely.d.ts +339 -2
  206. package/dist/esm/kysely.js +461 -10
  207. package/dist/esm/migration/migrator.d.ts +8 -0
  208. package/dist/esm/migration/migrator.js +1 -1
  209. package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
  210. package/dist/esm/operation-node/aggregate-function-node.js +4 -3
  211. package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
  212. package/dist/esm/operation-node/collate-node.d.ts +13 -0
  213. package/dist/esm/operation-node/collate-node.js +17 -0
  214. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  215. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  216. package/dist/esm/operation-node/create-type-node.js +1 -1
  217. package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
  218. package/dist/esm/operation-node/delete-query-node.js +11 -15
  219. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
  220. package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
  221. package/dist/esm/operation-node/join-node.d.ts +1 -1
  222. package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
  223. package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
  224. package/dist/esm/operation-node/operation-node-transformer.js +352 -312
  225. package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
  226. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  227. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  228. package/dist/esm/operation-node/or-action-node.d.ts +12 -0
  229. package/dist/esm/operation-node/or-action-node.js +16 -0
  230. package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
  231. package/dist/esm/operation-node/order-by-item-node.js +6 -0
  232. package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
  233. package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  234. package/dist/esm/operation-node/query-node.d.ts +7 -0
  235. package/dist/esm/operation-node/query-node.js +15 -0
  236. package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
  237. package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
  238. package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
  239. package/dist/esm/operation-node/rename-constraint-node.js +18 -0
  240. package/dist/esm/operation-node/select-query-node.d.ts +8 -2
  241. package/dist/esm/operation-node/select-query-node.js +11 -15
  242. package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
  243. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  244. package/dist/esm/operation-node/update-query-node.js +5 -2
  245. package/dist/esm/parser/collate-parser.d.ts +1 -0
  246. package/dist/esm/parser/collate-parser.js +2 -0
  247. package/dist/esm/parser/delete-from-parser.d.ts +5 -0
  248. package/dist/esm/parser/delete-from-parser.js +2 -0
  249. package/dist/esm/parser/join-parser.d.ts +1 -1
  250. package/dist/esm/parser/join-parser.js +7 -1
  251. package/dist/esm/parser/merge-into-parser.d.ts +5 -0
  252. package/dist/esm/parser/merge-into-parser.js +2 -0
  253. package/dist/esm/parser/order-by-parser.d.ts +18 -5
  254. package/dist/esm/parser/order-by-parser.js +27 -17
  255. package/dist/esm/parser/savepoint-parser.d.ts +4 -0
  256. package/dist/esm/parser/savepoint-parser.js +9 -0
  257. package/dist/esm/parser/select-from-parser.d.ts +4 -0
  258. package/dist/esm/parser/select-from-parser.js +2 -0
  259. package/dist/esm/parser/table-parser.d.ts +2 -5
  260. package/dist/esm/parser/update-parser.d.ts +5 -0
  261. package/dist/esm/parser/update-parser.js +2 -0
  262. package/dist/esm/parser/update-set-parser.d.ts +7 -4
  263. package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
  264. package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  265. package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
  266. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  267. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  268. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  269. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  270. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
  271. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  272. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
  273. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  274. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
  275. package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
  276. package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  277. package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
  278. package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
  279. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +6 -5
  280. package/dist/esm/plugin/with-schema/with-schema-transformer.js +29 -24
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
  282. package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
  283. package/dist/esm/query-builder/cte-builder.js +0 -2
  284. package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
  285. package/dist/esm/query-builder/delete-query-builder.js +12 -78
  286. package/dist/esm/query-builder/function-module.d.ts +31 -4
  287. package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
  288. package/dist/esm/query-builder/insert-query-builder.js +197 -10
  289. package/dist/esm/query-builder/join-builder.js +0 -2
  290. package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
  291. package/dist/esm/query-builder/merge-query-builder.js +29 -8
  292. package/dist/esm/query-builder/on-conflict-builder.js +0 -4
  293. package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
  294. package/dist/esm/query-builder/order-by-interface.js +2 -0
  295. package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
  296. package/dist/esm/query-builder/order-by-item-builder.js +72 -0
  297. package/dist/esm/query-builder/over-builder.d.ts +43 -6
  298. package/dist/esm/query-builder/over-builder.js +8 -25
  299. package/dist/esm/query-builder/returning-interface.d.ts +20 -3
  300. package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
  301. package/dist/esm/query-builder/select-query-builder.js +26 -26
  302. package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
  303. package/dist/esm/query-builder/update-query-builder.js +17 -15
  304. package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
  305. package/dist/esm/query-compiler/compiled-query.js +2 -0
  306. package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
  307. package/dist/esm/query-compiler/default-query-compiler.js +97 -2
  308. package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
  309. package/dist/esm/query-creator.d.ts +23 -25
  310. package/dist/esm/query-creator.js +281 -9
  311. package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
  312. package/dist/esm/query-executor/default-query-executor.js +2 -2
  313. package/dist/esm/query-executor/query-executor-base.js +7 -25
  314. package/dist/esm/raw-builder/raw-builder.js +0 -3
  315. package/dist/esm/raw-builder/sql.d.ts +3 -3
  316. package/dist/esm/raw-builder/sql.js +1 -1
  317. package/dist/esm/schema/alter-column-builder.js +0 -3
  318. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  319. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  320. package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
  321. package/dist/esm/schema/alter-table-builder.d.ts +7 -3
  322. package/dist/esm/schema/alter-table-builder.js +22 -11
  323. package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
  324. package/dist/esm/schema/alter-table-executor.js +0 -2
  325. package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
  326. package/dist/esm/schema/check-constraint-builder.js +17 -0
  327. package/dist/esm/schema/column-definition-builder.js +0 -2
  328. package/dist/esm/schema/create-index-builder.js +1 -3
  329. package/dist/esm/schema/create-schema-builder.js +0 -2
  330. package/dist/esm/schema/create-table-builder.d.ts +5 -4
  331. package/dist/esm/schema/create-table-builder.js +10 -8
  332. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  333. package/dist/esm/schema/create-type-builder.js +0 -2
  334. package/dist/esm/schema/create-view-builder.js +0 -2
  335. package/dist/esm/schema/drop-index-builder.js +0 -2
  336. package/dist/esm/schema/drop-schema-builder.js +0 -2
  337. package/dist/esm/schema/drop-table-builder.js +0 -2
  338. package/dist/esm/schema/drop-type-builder.js +0 -2
  339. package/dist/esm/schema/drop-view-builder.js +0 -2
  340. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
  341. package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
  342. package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
  343. package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
  344. package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
  345. package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
  346. package/dist/esm/schema/schema.d.ts +14 -0
  347. package/dist/esm/schema/schema.js +21 -0
  348. package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
  349. package/dist/esm/schema/unique-constraint-builder.js +26 -5
  350. package/dist/esm/util/infer-result.d.ts +1 -1
  351. package/dist/esm/util/log.d.ts +1 -0
  352. package/dist/esm/util/log.js +3 -2
  353. package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
  354. package/dist/esm/util/provide-controlled-connection.js +22 -0
  355. package/outdated-typescript.d.ts +5 -0
  356. package/package.json +16 -2
  357. package/CONTRIBUTING.md +0 -168
  358. package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
  359. package/dist/cjs/util/prevent-await.d.ts +0 -1
  360. package/dist/cjs/util/prevent-await.js +0 -13
  361. package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
  362. package/dist/esm/util/prevent-await.d.ts +0 -1
  363. package/dist/esm/util/prevent-await.js +0 -11
@@ -37,7 +37,7 @@ import { OnConflictNode } from './on-conflict-node.js';
37
37
  import { CreateIndexNode } from './create-index-node.js';
38
38
  import { ListNode } from './list-node.js';
39
39
  import { DropIndexNode } from './drop-index-node.js';
40
- import { PrimaryKeyConstraintNode } from './primary-constraint-node.js';
40
+ import { PrimaryKeyConstraintNode } from './primary-key-constraint-node.js';
41
41
  import { UniqueConstraintNode } from './unique-constraint-node.js';
42
42
  import { ReferencesNode } from './references-node.js';
43
43
  import { CheckConstraintNode } from './check-constraint-node.js';
@@ -92,6 +92,10 @@ import { CastNode } from './cast-node.js';
92
92
  import { FetchNode } from './fetch-node.js';
93
93
  import { TopNode } from './top-node.js';
94
94
  import { OutputNode } from './output-node.js';
95
+ import { RefreshMaterializedViewNode } from './refresh-materialized-view-node.js';
96
+ import { OrActionNode } from './or-action-node.js';
97
+ import { CollateNode } from './collate-node.js';
98
+ import { RenameConstraintNode } from './rename-constraint-node.js';
95
99
  export declare abstract class OperationNodeVisitor {
96
100
  #private;
97
101
  protected readonly nodeStack: OperationNode[];
@@ -148,6 +152,7 @@ export declare abstract class OperationNodeVisitor {
148
152
  protected abstract visitModifyColumn(node: ModifyColumnNode): void;
149
153
  protected abstract visitAddConstraint(node: AddConstraintNode): void;
150
154
  protected abstract visitDropConstraint(node: DropConstraintNode): void;
155
+ protected abstract visitRenameConstraint(node: RenameConstraintNode): void;
151
156
  protected abstract visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
152
157
  protected abstract visitDataType(node: DataTypeNode): void;
153
158
  protected abstract visitSelectAll(node: SelectAllNode): void;
@@ -157,6 +162,7 @@ export declare abstract class OperationNodeVisitor {
157
162
  protected abstract visitPrimitiveValueList(node: PrimitiveValueListNode): void;
158
163
  protected abstract visitOperator(node: OperatorNode): void;
159
164
  protected abstract visitCreateView(node: CreateViewNode): void;
165
+ protected abstract visitRefreshMaterializedView(node: RefreshMaterializedViewNode): void;
160
166
  protected abstract visitDropView(node: DropViewNode): void;
161
167
  protected abstract visitGenerated(node: GeneratedNode): void;
162
168
  protected abstract visitDefaultValue(node: DefaultValueNode): void;
@@ -190,4 +196,6 @@ export declare abstract class OperationNodeVisitor {
190
196
  protected abstract visitFetch(node: FetchNode): void;
191
197
  protected abstract visitTop(node: TopNode): void;
192
198
  protected abstract visitOutput(node: OutputNode): void;
199
+ protected abstract visitOrAction(node: OrActionNode): void;
200
+ protected abstract visitCollate(node: CollateNode): void;
193
201
  }
@@ -64,8 +64,10 @@ export class OperationNodeVisitor {
64
64
  ModifyColumnNode: this.visitModifyColumn.bind(this),
65
65
  AddConstraintNode: this.visitAddConstraint.bind(this),
66
66
  DropConstraintNode: this.visitDropConstraint.bind(this),
67
+ RenameConstraintNode: this.visitRenameConstraint.bind(this),
67
68
  ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
68
69
  CreateViewNode: this.visitCreateView.bind(this),
70
+ RefreshMaterializedViewNode: this.visitRefreshMaterializedView.bind(this),
69
71
  DropViewNode: this.visitDropView.bind(this),
70
72
  GeneratedNode: this.visitGenerated.bind(this),
71
73
  DefaultValueNode: this.visitDefaultValue.bind(this),
@@ -99,6 +101,8 @@ export class OperationNodeVisitor {
99
101
  FetchNode: this.visitFetch.bind(this),
100
102
  TopNode: this.visitTop.bind(this),
101
103
  OutputNode: this.visitOutput.bind(this),
104
+ OrActionNode: this.visitOrAction.bind(this),
105
+ CollateNode: this.visitCollate.bind(this),
102
106
  });
103
107
  visitNode = (node) => {
104
108
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode' | 'OutputNode';
1
+ export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'RefreshMaterializedViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode' | 'OutputNode' | 'OrActionNode' | 'CollateNode' | 'RenameConstraintNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -0,0 +1,12 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface OrActionNode extends OperationNode {
3
+ readonly kind: 'OrActionNode';
4
+ readonly action: string;
5
+ }
6
+ /**
7
+ * @internal
8
+ */
9
+ export declare const OrActionNode: Readonly<{
10
+ is(node: OperationNode): node is OrActionNode;
11
+ create(action: string): OrActionNode;
12
+ }>;
@@ -0,0 +1,16 @@
1
+ /// <reference types="./or-action-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const OrActionNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'OrActionNode';
9
+ },
10
+ create(action) {
11
+ return freeze({
12
+ kind: 'OrActionNode',
13
+ action,
14
+ });
15
+ },
16
+ });
@@ -1,8 +1,12 @@
1
+ import { CollateNode } from './collate-node.js';
1
2
  import { OperationNode } from './operation-node.js';
3
+ export type OrderByItemNodeProps = Omit<OrderByItemNode, 'kind' | 'orderBy'>;
2
4
  export interface OrderByItemNode extends OperationNode {
3
5
  readonly kind: 'OrderByItemNode';
4
6
  readonly orderBy: OperationNode;
5
7
  readonly direction?: OperationNode;
8
+ readonly nulls?: 'first' | 'last';
9
+ readonly collation?: CollateNode;
6
10
  }
7
11
  /**
8
12
  * @internal
@@ -10,4 +14,5 @@ export interface OrderByItemNode extends OperationNode {
10
14
  export declare const OrderByItemNode: Readonly<{
11
15
  is(node: OperationNode): node is OrderByItemNode;
12
16
  create(orderBy: OperationNode, direction?: OperationNode): OrderByItemNode;
17
+ cloneWith(node: OrderByItemNode, props: OrderByItemNodeProps): OrderByItemNode;
13
18
  }>;
@@ -14,4 +14,10 @@ export const OrderByItemNode = freeze({
14
14
  direction,
15
15
  });
16
16
  },
17
+ cloneWith(node, props) {
18
+ return freeze({
19
+ ...node,
20
+ ...props,
21
+ });
22
+ },
17
23
  });
@@ -0,0 +1,29 @@
1
+ import { ColumnNode } from './column-node.js';
2
+ import { IdentifierNode } from './identifier-node.js';
3
+ import { OperationNode } from './operation-node.js';
4
+ export interface PrimaryKeyConstraintNode extends OperationNode {
5
+ readonly kind: 'PrimaryKeyConstraintNode';
6
+ readonly columns: ReadonlyArray<ColumnNode>;
7
+ readonly name?: IdentifierNode;
8
+ readonly deferrable?: boolean;
9
+ readonly initiallyDeferred?: boolean;
10
+ }
11
+ export type PrimaryKeyConstraintNodeProps = Omit<Partial<PrimaryKeyConstraintNode>, 'kind'>;
12
+ /**
13
+ * @internal
14
+ */
15
+ export declare const PrimaryKeyConstraintNode: Readonly<{
16
+ is(node: OperationNode): node is PrimaryKeyConstraintNode;
17
+ create(columns: string[], constraintName?: string): PrimaryKeyConstraintNode;
18
+ cloneWith(node: PrimaryKeyConstraintNode, props: PrimaryKeyConstraintNodeProps): PrimaryKeyConstraintNode;
19
+ }>;
20
+ /**
21
+ * Backwards compatibility for a typo in the codebase.
22
+ *
23
+ * @deprecated Use {@link PrimaryKeyConstraintNode} instead.
24
+ */
25
+ export declare const PrimaryConstraintNode: Readonly<{
26
+ is(node: OperationNode): node is PrimaryKeyConstraintNode;
27
+ create(columns: string[], constraintName?: string): PrimaryKeyConstraintNode;
28
+ cloneWith(node: PrimaryKeyConstraintNode, props: PrimaryKeyConstraintNodeProps): PrimaryKeyConstraintNode;
29
+ }>;
@@ -1,11 +1,11 @@
1
- /// <reference types="./primary-constraint-node.d.ts" />
1
+ /// <reference types="./primary-key-constraint-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
3
  import { ColumnNode } from './column-node.js';
4
4
  import { IdentifierNode } from './identifier-node.js';
5
5
  /**
6
6
  * @internal
7
7
  */
8
- export const PrimaryConstraintNode = freeze({
8
+ export const PrimaryKeyConstraintNode = freeze({
9
9
  is(node) {
10
10
  return node.kind === 'PrimaryKeyConstraintNode';
11
11
  },
@@ -16,4 +16,13 @@ export const PrimaryConstraintNode = freeze({
16
16
  name: constraintName ? IdentifierNode.create(constraintName) : undefined,
17
17
  });
18
18
  },
19
+ cloneWith(node, props) {
20
+ return freeze({ ...node, ...props });
21
+ },
19
22
  });
23
+ /**
24
+ * Backwards compatibility for a typo in the codebase.
25
+ *
26
+ * @deprecated Use {@link PrimaryKeyConstraintNode} instead.
27
+ */
28
+ export const PrimaryConstraintNode = PrimaryKeyConstraintNode;
@@ -13,6 +13,8 @@ import { Expression } from '../expression/expression.js';
13
13
  import { MergeQueryNode } from './merge-query-node.js';
14
14
  import { TopNode } from './top-node.js';
15
15
  import { OutputNode } from './output-node.js';
16
+ import { OrderByNode } from './order-by-node.js';
17
+ import { OrderByItemNode } from './order-by-item-node.js';
16
18
  export type QueryNode = SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode | MergeQueryNode;
17
19
  type HasJoins = {
18
20
  joins?: ReadonlyArray<JoinNode>;
@@ -35,6 +37,9 @@ type HasOutput = {
35
37
  type HasEndModifiers = {
36
38
  endModifiers?: ReadonlyArray<OperationNode>;
37
39
  };
40
+ type HasOrderBy = {
41
+ orderBy?: OrderByNode;
42
+ };
38
43
  /**
39
44
  * @internal
40
45
  */
@@ -49,5 +54,7 @@ export declare const QueryNode: Readonly<{
49
54
  cloneWithExplain<T extends HasExplain>(node: T, format: ExplainFormat | undefined, options: Expression<any> | undefined): T;
50
55
  cloneWithTop<T extends HasTop>(node: T, top: TopNode): T;
51
56
  cloneWithOutput<T extends HasOutput>(node: T, selections: ReadonlyArray<SelectionNode>): T;
57
+ cloneWithOrderByItems<T extends HasOrderBy>(node: T, items: ReadonlyArray<OrderByItemNode>): T;
58
+ cloneWithoutOrderBy<T extends HasOrderBy>(node: T): T;
52
59
  }>;
53
60
  export {};
@@ -9,6 +9,7 @@ import { ReturningNode } from './returning-node.js';
9
9
  import { ExplainNode } from './explain-node.js';
10
10
  import { MergeQueryNode } from './merge-query-node.js';
11
11
  import { OutputNode } from './output-node.js';
12
+ import { OrderByNode } from './order-by-node.js';
12
13
  /**
13
14
  * @internal
14
15
  */
@@ -82,4 +83,18 @@ export const QueryNode = freeze({
82
83
  : OutputNode.create(selections),
83
84
  });
84
85
  },
86
+ cloneWithOrderByItems(node, items) {
87
+ return freeze({
88
+ ...node,
89
+ orderBy: node.orderBy
90
+ ? OrderByNode.cloneWithItems(node.orderBy, items)
91
+ : OrderByNode.create(items),
92
+ });
93
+ },
94
+ cloneWithoutOrderBy(node) {
95
+ return freeze({
96
+ ...node,
97
+ orderBy: undefined,
98
+ });
99
+ },
85
100
  });
@@ -0,0 +1,17 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
3
+ export type RefreshMaterializedViewNodeParams = Omit<Partial<RefreshMaterializedViewNode>, 'kind' | 'name'>;
4
+ export interface RefreshMaterializedViewNode extends OperationNode {
5
+ readonly kind: 'RefreshMaterializedViewNode';
6
+ readonly name: SchemableIdentifierNode;
7
+ readonly concurrently?: boolean;
8
+ readonly withNoData?: boolean;
9
+ }
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare const RefreshMaterializedViewNode: Readonly<{
14
+ is(node: OperationNode): node is RefreshMaterializedViewNode;
15
+ create(name: string): RefreshMaterializedViewNode;
16
+ cloneWith(createView: RefreshMaterializedViewNode, params: RefreshMaterializedViewNodeParams): RefreshMaterializedViewNode;
17
+ }>;
@@ -0,0 +1,23 @@
1
+ /// <reference types="./refresh-materialized-view-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ export const RefreshMaterializedViewNode = freeze({
8
+ is(node) {
9
+ return node.kind === 'RefreshMaterializedViewNode';
10
+ },
11
+ create(name) {
12
+ return freeze({
13
+ kind: 'RefreshMaterializedViewNode',
14
+ name: SchemableIdentifierNode.create(name),
15
+ });
16
+ },
17
+ cloneWith(createView, params) {
18
+ return freeze({
19
+ ...createView,
20
+ ...params,
21
+ });
22
+ },
23
+ });
@@ -0,0 +1,14 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { IdentifierNode } from './identifier-node.js';
3
+ export interface RenameConstraintNode extends OperationNode {
4
+ readonly kind: 'RenameConstraintNode';
5
+ readonly oldName: IdentifierNode;
6
+ readonly newName: IdentifierNode;
7
+ }
8
+ /**
9
+ * @internal
10
+ */
11
+ export declare const RenameConstraintNode: Readonly<{
12
+ is(node: OperationNode): node is RenameConstraintNode;
13
+ create(oldName: string, newName: string): RenameConstraintNode;
14
+ }>;
@@ -0,0 +1,18 @@
1
+ /// <reference types="./rename-constraint-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ import { IdentifierNode } from './identifier-node.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ export const RenameConstraintNode = freeze({
8
+ is(node) {
9
+ return node.kind === 'RenameConstraintNode';
10
+ },
11
+ create(oldName, newName) {
12
+ return freeze({
13
+ kind: 'RenameConstraintNode',
14
+ oldName: IdentifierNode.create(oldName),
15
+ newName: IdentifierNode.create(newName),
16
+ });
17
+ },
18
+ });
@@ -46,7 +46,10 @@ export declare const SelectQueryNode: Readonly<{
46
46
  cloneWithSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
47
47
  cloneWithDistinctOn(select: SelectQueryNode, expressions: ReadonlyArray<OperationNode>): SelectQueryNode;
48
48
  cloneWithFrontModifier(select: SelectQueryNode, modifier: SelectModifierNode): SelectQueryNode;
49
- cloneWithOrderByItems(selectNode: SelectQueryNode, items: ReadonlyArray<OrderByItemNode>): SelectQueryNode;
49
+ /**
50
+ * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.
51
+ */
52
+ cloneWithOrderByItems: (node: SelectQueryNode, items: ReadonlyArray<OrderByItemNode>) => SelectQueryNode;
50
53
  cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
51
54
  cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
52
55
  cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
@@ -56,6 +59,9 @@ export declare const SelectQueryNode: Readonly<{
56
59
  cloneWithoutSelections(select: SelectQueryNode): SelectQueryNode;
57
60
  cloneWithoutLimit(select: SelectQueryNode): SelectQueryNode;
58
61
  cloneWithoutOffset(select: SelectQueryNode): SelectQueryNode;
59
- cloneWithoutOrderBy(select: SelectQueryNode): SelectQueryNode;
62
+ /**
63
+ * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.
64
+ */
65
+ cloneWithoutOrderBy: (node: SelectQueryNode) => SelectQueryNode;
60
66
  cloneWithoutGroupBy(select: SelectQueryNode): SelectQueryNode;
61
67
  }>;
@@ -3,7 +3,7 @@ import { freeze } from '../util/object-utils.js';
3
3
  import { FromNode } from './from-node.js';
4
4
  import { GroupByNode } from './group-by-node.js';
5
5
  import { HavingNode } from './having-node.js';
6
- import { OrderByNode } from './order-by-node.js';
6
+ import { QueryNode } from './query-node.js';
7
7
  /**
8
8
  * @internal
9
9
  */
@@ -48,14 +48,11 @@ export const SelectQueryNode = freeze({
48
48
  : freeze([modifier]),
49
49
  });
50
50
  },
51
- cloneWithOrderByItems(selectNode, items) {
52
- return freeze({
53
- ...selectNode,
54
- orderBy: selectNode.orderBy
55
- ? OrderByNode.cloneWithItems(selectNode.orderBy, items)
56
- : OrderByNode.create(items),
57
- });
58
- },
51
+ // TODO: remove in v0.29
52
+ /**
53
+ * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.
54
+ */
55
+ cloneWithOrderByItems: (node, items) => QueryNode.cloneWithOrderByItems(node, items),
59
56
  cloneWithGroupByItems(selectNode, items) {
60
57
  return freeze({
61
58
  ...selectNode,
@@ -116,12 +113,11 @@ export const SelectQueryNode = freeze({
116
113
  offset: undefined,
117
114
  });
118
115
  },
119
- cloneWithoutOrderBy(select) {
120
- return freeze({
121
- ...select,
122
- orderBy: undefined,
123
- });
124
- },
116
+ // TODO: remove in v0.29
117
+ /**
118
+ * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.
119
+ */
120
+ cloneWithoutOrderBy: (node) => QueryNode.cloneWithoutOrderBy(node),
125
121
  cloneWithoutGroupBy(select) {
126
122
  return freeze({
127
123
  ...select,
@@ -6,6 +6,8 @@ export interface UniqueConstraintNode extends OperationNode {
6
6
  readonly columns: ReadonlyArray<ColumnNode>;
7
7
  readonly name?: IdentifierNode;
8
8
  readonly nullsNotDistinct?: boolean;
9
+ readonly deferrable?: boolean;
10
+ readonly initiallyDeferred?: boolean;
9
11
  }
10
12
  export type UniqueConstraintNodeProps = Omit<Partial<UniqueConstraintNode>, 'kind'>;
11
13
  /**
@@ -1,9 +1,7 @@
1
1
  import { ColumnUpdateNode } from './column-update-node.js';
2
2
  import { JoinNode } from './join-node.js';
3
3
  import { OperationNode } from './operation-node.js';
4
- import { PrimitiveValueListNode } from './primitive-value-list-node.js';
5
4
  import { ReturningNode } from './returning-node.js';
6
- import { ValueListNode } from './value-list-node.js';
7
5
  import { WhereNode } from './where-node.js';
8
6
  import { WithNode } from './with-node.js';
9
7
  import { FromNode } from './from-node.js';
@@ -11,7 +9,7 @@ import { ExplainNode } from './explain-node.js';
11
9
  import { LimitNode } from './limit-node.js';
12
10
  import { TopNode } from './top-node.js';
13
11
  import { OutputNode } from './output-node.js';
14
- export type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
12
+ import { OrderByNode } from './order-by-node.js';
15
13
  export interface UpdateQueryNode extends OperationNode {
16
14
  readonly kind: 'UpdateQueryNode';
17
15
  readonly table?: OperationNode;
@@ -26,13 +24,14 @@ export interface UpdateQueryNode extends OperationNode {
26
24
  readonly limit?: LimitNode;
27
25
  readonly top?: TopNode;
28
26
  readonly output?: OutputNode;
27
+ readonly orderBy?: OrderByNode;
29
28
  }
30
29
  /**
31
30
  * @internal
32
31
  */
33
32
  export declare const UpdateQueryNode: Readonly<{
34
33
  is(node: OperationNode): node is UpdateQueryNode;
35
- create(table: OperationNode, withNode?: WithNode): UpdateQueryNode;
34
+ create(tables: ReadonlyArray<OperationNode>, withNode?: WithNode): UpdateQueryNode;
36
35
  createWithoutTable(): UpdateQueryNode;
37
36
  cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<OperationNode>): UpdateQueryNode;
38
37
  cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
@@ -1,6 +1,7 @@
1
1
  /// <reference types="./update-query-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
3
  import { FromNode } from './from-node.js';
4
+ import { ListNode } from './list-node.js';
4
5
  /**
5
6
  * @internal
6
7
  */
@@ -8,10 +9,12 @@ export const UpdateQueryNode = freeze({
8
9
  is(node) {
9
10
  return node.kind === 'UpdateQueryNode';
10
11
  },
11
- create(table, withNode) {
12
+ create(tables, withNode) {
12
13
  return freeze({
13
14
  kind: 'UpdateQueryNode',
14
- table,
15
+ // For backwards compatibility, use the raw table node when there's only one table
16
+ // and don't rename the property to something like `tables`.
17
+ table: tables.length === 1 ? tables[0] : ListNode.create(tables),
15
18
  ...(withNode && { with: withNode }),
16
19
  });
17
20
  },
@@ -0,0 +1 @@
1
+ export type Collation = 'nocase' | 'binary' | 'rtrim' | (string & {});
@@ -0,0 +1,2 @@
1
+ /// <reference types="./collate-parser.d.ts" />
2
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { DeleteQueryBuilder } from '../query-builder/delete-query-builder.js';
2
+ import type { DeleteResult } from '../query-builder/delete-result.js';
3
+ import type { ShallowRecord } from '../util/type-utils.js';
4
+ import type { ExtractTableAlias, From, FromTables, TableExpressionOrList } from './table-parser.js';
5
+ export type DeleteFrom<DB, TE extends TableExpressionOrList<DB, never>> = TE extends ReadonlyArray<infer T> ? DeleteQueryBuilder<From<DB, T>, FromTables<DB, never, T>, DeleteResult> : TE extends keyof DB & string ? DeleteQueryBuilder<DB, ExtractTableAlias<DB, TE>, DeleteResult> : TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? DeleteQueryBuilder<DB & ShallowRecord<A, DB[T]>, A, DeleteResult> : never : DeleteQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, DeleteResult>;
@@ -0,0 +1,2 @@
1
+ /// <reference types="./delete-from-parser.d.ts" />
2
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { JoinNode, JoinType } from '../operation-node/join-node.js';
2
+ import { JoinBuilder } from '../query-builder/join-builder.js';
2
3
  import { AnyColumn, AnyColumnWithTable, DrainOuterGeneric } from '../util/type-utils.js';
3
4
  import { From, FromTables } from './table-parser.js';
4
- import { JoinBuilder } from '../query-builder/join-builder.js';
5
5
  export type JoinReferenceExpression<DB, TB extends keyof DB, TE> = DrainOuterGeneric<AnyJoinColumn<DB, TB, TE> | AnyJoinColumnWithTable<DB, TB, TE>>;
6
6
  export type JoinCallbackExpression<DB, TB extends keyof DB, TE> = (join: JoinBuilder<From<DB, TE>, FromTables<DB, TB, TE>>) => JoinBuilder<any, any>;
7
7
  type AnyJoinColumn<DB, TB extends keyof DB, TE> = AnyColumn<From<DB, TE>, FromTables<DB, TB, TE>>;
@@ -1,8 +1,8 @@
1
1
  /// <reference types="./join-parser.d.ts" />
2
2
  import { JoinNode } from '../operation-node/join-node.js';
3
- import { parseTableExpression, } from './table-parser.js';
4
3
  import { parseReferentialBinaryOperation } from './binary-operation-parser.js';
5
4
  import { createJoinBuilder } from './parse-utils.js';
5
+ import { parseTableExpression, } from './table-parser.js';
6
6
  export function parseJoin(joinType, args) {
7
7
  if (args.length === 3) {
8
8
  return parseSingleOnJoin(joinType, args[0], args[1], args[2]);
@@ -10,6 +10,9 @@ export function parseJoin(joinType, args) {
10
10
  else if (args.length === 2) {
11
11
  return parseCallbackJoin(joinType, args[0], args[1]);
12
12
  }
13
+ else if (args.length === 1) {
14
+ return parseOnlessJoin(joinType, args[0]);
15
+ }
13
16
  else {
14
17
  throw new Error('not implemented');
15
18
  }
@@ -20,3 +23,6 @@ function parseCallbackJoin(joinType, from, callback) {
20
23
  function parseSingleOnJoin(joinType, from, lhsColumn, rhsColumn) {
21
24
  return JoinNode.createWithOn(joinType, parseTableExpression(from), parseReferentialBinaryOperation(lhsColumn, '=', rhsColumn));
22
25
  }
26
+ function parseOnlessJoin(joinType, from) {
27
+ return JoinNode.create(joinType, parseTableExpression(from));
28
+ }
@@ -0,0 +1,5 @@
1
+ import type { MergeQueryBuilder } from '../query-builder/merge-query-builder.js';
2
+ import type { MergeResult } from '../query-builder/merge-result.js';
3
+ import type { ShallowRecord } from '../util/type-utils.js';
4
+ import type { ExtractTableAlias, SimpleTableReference } from './table-parser.js';
5
+ export type MergeInto<DB, TE extends SimpleTableReference<DB>> = TE extends keyof DB & string ? MergeQueryBuilder<DB, ExtractTableAlias<DB, TE>, MergeResult> : TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? MergeQueryBuilder<DB & ShallowRecord<A, DB[T]>, A, MergeResult> : never : never;
@@ -0,0 +1,2 @@
1
+ /// <reference types="./merge-into-parser.d.ts" />
2
+ export {};
@@ -1,12 +1,25 @@
1
+ import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
1
2
  import { Expression } from '../expression/expression.js';
2
3
  import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
3
- import { StringReference } from './reference-parser.js';
4
- import { ReferenceExpression } from './reference-parser.js';
4
+ import { OrderByItemBuilder } from '../query-builder/order-by-item-builder.js';
5
+ import { ExpressionOrFactory } from './expression-parser.js';
6
+ import { ReferenceExpression, StringReference } from './reference-parser.js';
7
+ export type OrderByExpression<DB, TB extends keyof DB, O> = StringReference<DB, TB> | (keyof O & string) | ExpressionOrFactory<DB, TB, any> | DynamicReferenceBuilder<any>;
8
+ export type OrderByModifiers = OrderByDirection | OrderByModifiersCallbackExpression;
5
9
  export type OrderByDirection = 'asc' | 'desc';
6
10
  export declare function isOrderByDirection(thing: unknown): thing is OrderByDirection;
11
+ export type OrderByModifiersCallbackExpression = (builder: OrderByItemBuilder) => OrderByItemBuilder;
12
+ /**
13
+ * @deprecated performance reasons, use {@link OrderByExpression} instead.
14
+ */
7
15
  export type DirectedOrderByStringReference<DB, TB extends keyof DB, O> = `${StringReference<DB, TB> | (keyof O & string)} ${OrderByDirection}`;
8
- export type UndirectedOrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
9
- export type OrderByExpression<DB, TB extends keyof DB, O> = UndirectedOrderByExpression<DB, TB, O> | DirectedOrderByStringReference<DB, TB, O>;
16
+ /**
17
+ * @deprecated replaced with {@link OrderByModifiers}
18
+ */
10
19
  export type OrderByDirectionExpression = OrderByDirection | Expression<any>;
20
+ /**
21
+ * @deprecated use {@link OrderByExpression} instead.
22
+ */
23
+ export type UndirectedOrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
11
24
  export declare function parseOrderBy(args: any[]): OrderByItemNode[];
12
- export declare function parseOrderByItem(ref: ReferenceExpression<any, any>, direction?: OrderByDirectionExpression): OrderByItemNode;
25
+ export declare function parseOrderByItem(expr: OrderByExpression<any, any, any>, modifiers?: OrderByModifiers): OrderByItemNode;