kysely 0.23.5 → 0.24.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 (300) hide show
  1. package/README.md +46 -24
  2. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
  3. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  7. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
  8. package/dist/cjs/driver/runtime-driver.js +4 -2
  9. package/dist/cjs/expression/expression-builder.d.ts +386 -0
  10. package/dist/cjs/expression/expression-builder.js +92 -0
  11. package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
  12. package/dist/cjs/expression/expression-wrapper.js +54 -0
  13. package/dist/cjs/expression/expression.d.ts +1 -1
  14. package/dist/cjs/helpers/mysql.d.ts +140 -0
  15. package/dist/cjs/helpers/mysql.js +170 -0
  16. package/dist/cjs/helpers/postgres.d.ts +133 -0
  17. package/dist/cjs/helpers/postgres.js +141 -0
  18. package/dist/cjs/index.d.ts +4 -3
  19. package/dist/cjs/index.js +4 -2
  20. package/dist/cjs/kysely.d.ts +10 -0
  21. package/dist/cjs/kysely.js +12 -1
  22. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  23. package/dist/cjs/migration/migrator.d.ts +5 -2
  24. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
  25. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  26. package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
  27. package/dist/cjs/operation-node/delete-query-node.js +0 -6
  28. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  29. package/dist/cjs/operation-node/function-node.js +19 -0
  30. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  31. package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
  32. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  33. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  34. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  36. package/dist/cjs/operation-node/operator-node.js +38 -3
  37. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  38. package/dist/cjs/operation-node/query-node.js +9 -2
  39. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  40. package/dist/cjs/operation-node/select-query-node.js +0 -6
  41. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  42. package/dist/cjs/operation-node/update-query-node.js +0 -6
  43. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  44. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  45. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  46. package/dist/cjs/parser/coalesce-parser.js +0 -9
  47. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  48. package/dist/cjs/parser/expression-parser.js +3 -3
  49. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  50. package/dist/cjs/parser/group-by-parser.js +3 -0
  51. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  52. package/dist/cjs/parser/insert-values-parser.js +19 -13
  53. package/dist/cjs/parser/join-parser.js +1 -1
  54. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  55. package/dist/cjs/parser/parse-utils.js +1 -8
  56. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  57. package/dist/cjs/parser/select-parser.d.ts +5 -13
  58. package/dist/cjs/parser/select-parser.js +8 -4
  59. package/dist/cjs/parser/table-parser.d.ts +5 -3
  60. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  61. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  62. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  63. package/dist/cjs/parser/update-set-parser.js +9 -4
  64. package/dist/cjs/parser/value-parser.d.ts +5 -0
  65. package/dist/cjs/parser/value-parser.js +1 -3
  66. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  67. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  68. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  69. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  70. package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
  71. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  72. package/dist/cjs/query-builder/delete-result.js +3 -0
  73. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  74. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  75. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  76. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  77. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  78. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  79. package/dist/cjs/query-builder/function-module.d.ts +40 -12
  80. package/dist/cjs/query-builder/function-module.js +43 -329
  81. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  82. package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
  83. package/dist/cjs/query-builder/insert-query-builder.js +21 -29
  84. package/dist/cjs/query-builder/insert-result.js +3 -0
  85. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  86. package/dist/cjs/query-builder/join-builder.js +17 -22
  87. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  88. package/dist/cjs/query-builder/no-result-error.js +5 -1
  89. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  90. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  91. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  92. package/dist/cjs/query-builder/over-builder.js +7 -0
  93. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  94. package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
  95. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  96. package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
  97. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  98. package/dist/cjs/query-builder/update-result.js +3 -0
  99. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  100. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  101. package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
  102. package/dist/cjs/query-creator.d.ts +9 -2
  103. package/dist/cjs/query-creator.js +1 -24
  104. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  105. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  106. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  107. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  108. package/dist/cjs/raw-builder/sql.js +8 -2
  109. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  110. package/dist/cjs/schema/alter-column-builder.js +7 -0
  111. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  112. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  113. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  114. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  115. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  116. package/dist/cjs/schema/column-definition-builder.js +8 -1
  117. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  118. package/dist/cjs/schema/create-index-builder.js +17 -0
  119. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  120. package/dist/cjs/schema/create-schema-builder.js +7 -0
  121. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  122. package/dist/cjs/schema/create-table-builder.js +3 -1
  123. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  124. package/dist/cjs/schema/create-type-builder.js +7 -0
  125. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  126. package/dist/cjs/schema/create-view-builder.js +7 -0
  127. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  128. package/dist/cjs/schema/drop-index-builder.js +7 -0
  129. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  130. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  131. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  132. package/dist/cjs/schema/drop-table-builder.js +7 -0
  133. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  134. package/dist/cjs/schema/drop-type-builder.js +7 -0
  135. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  136. package/dist/cjs/schema/drop-view-builder.js +7 -0
  137. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  138. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  139. package/dist/cjs/util/compilable.d.ts +1 -0
  140. package/dist/cjs/util/compilable.js +6 -0
  141. package/dist/cjs/util/explainable.d.ts +35 -0
  142. package/dist/cjs/util/log.d.ts +2 -0
  143. package/dist/cjs/util/object-utils.js +1 -1
  144. package/dist/cjs/util/streamable.d.ts +29 -0
  145. package/dist/cjs/util/streamable.js +2 -0
  146. package/dist/cjs/util/type-utils.d.ts +1 -0
  147. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  148. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  149. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  150. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  151. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  152. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  153. package/dist/esm/driver/runtime-driver.js +4 -2
  154. package/dist/esm/expression/expression-builder.d.ts +386 -0
  155. package/dist/esm/expression/expression-builder.js +88 -0
  156. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  157. package/dist/esm/expression/expression-wrapper.js +50 -0
  158. package/dist/esm/expression/expression.d.ts +1 -1
  159. package/dist/esm/helpers/mysql.d.ts +140 -0
  160. package/dist/esm/helpers/mysql.js +165 -0
  161. package/dist/esm/helpers/postgres.d.ts +133 -0
  162. package/dist/esm/helpers/postgres.js +136 -0
  163. package/dist/esm/index.d.ts +4 -3
  164. package/dist/esm/index.js +2 -1
  165. package/dist/esm/kysely.d.ts +10 -0
  166. package/dist/esm/kysely.js +13 -2
  167. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  168. package/dist/esm/migration/migrator.d.ts +5 -2
  169. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
  170. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  171. package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
  172. package/dist/esm/operation-node/delete-query-node.js +0 -6
  173. package/dist/esm/operation-node/function-node.d.ts +13 -0
  174. package/dist/esm/operation-node/function-node.js +17 -0
  175. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  176. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  177. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  178. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  179. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  180. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  181. package/dist/esm/operation-node/operator-node.js +34 -3
  182. package/dist/esm/operation-node/query-node.d.ts +25 -8
  183. package/dist/esm/operation-node/query-node.js +9 -2
  184. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  185. package/dist/esm/operation-node/select-query-node.js +0 -6
  186. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  187. package/dist/esm/operation-node/update-query-node.js +0 -6
  188. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  189. package/dist/esm/parser/binary-operation-parser.js +85 -37
  190. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  191. package/dist/esm/parser/coalesce-parser.js +1 -7
  192. package/dist/esm/parser/expression-parser.d.ts +7 -3
  193. package/dist/esm/parser/expression-parser.js +3 -3
  194. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  195. package/dist/esm/parser/group-by-parser.js +3 -0
  196. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  197. package/dist/esm/parser/insert-values-parser.js +18 -12
  198. package/dist/esm/parser/join-parser.js +2 -2
  199. package/dist/esm/parser/parse-utils.d.ts +0 -2
  200. package/dist/esm/parser/parse-utils.js +0 -6
  201. package/dist/esm/parser/returning-parser.d.ts +2 -1
  202. package/dist/esm/parser/select-parser.d.ts +5 -13
  203. package/dist/esm/parser/select-parser.js +7 -3
  204. package/dist/esm/parser/table-parser.d.ts +5 -3
  205. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  206. package/dist/esm/parser/unary-operation-parser.js +8 -8
  207. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  208. package/dist/esm/parser/update-set-parser.js +7 -2
  209. package/dist/esm/parser/value-parser.d.ts +5 -0
  210. package/dist/esm/parser/value-parser.js +1 -3
  211. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  212. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  213. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  214. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  215. package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
  216. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  217. package/dist/esm/query-builder/delete-result.js +3 -0
  218. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  219. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  220. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  221. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  222. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  223. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  224. package/dist/esm/query-builder/function-module.d.ts +40 -12
  225. package/dist/esm/query-builder/function-module.js +42 -328
  226. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  227. package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
  228. package/dist/esm/query-builder/insert-query-builder.js +25 -33
  229. package/dist/esm/query-builder/insert-result.js +3 -0
  230. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  231. package/dist/esm/query-builder/join-builder.js +18 -23
  232. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  233. package/dist/esm/query-builder/no-result-error.js +3 -0
  234. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  235. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  236. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  237. package/dist/esm/query-builder/over-builder.js +7 -0
  238. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  239. package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
  240. package/dist/esm/query-builder/select-query-builder.js +337 -82
  241. package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
  242. package/dist/esm/query-builder/update-query-builder.js +25 -119
  243. package/dist/esm/query-builder/update-result.js +3 -0
  244. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  245. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  246. package/dist/esm/query-compiler/default-query-compiler.js +17 -1
  247. package/dist/esm/query-creator.d.ts +9 -2
  248. package/dist/esm/query-creator.js +1 -24
  249. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  250. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  251. package/dist/esm/raw-builder/raw-builder.js +13 -7
  252. package/dist/esm/raw-builder/sql.d.ts +17 -9
  253. package/dist/esm/raw-builder/sql.js +8 -2
  254. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  255. package/dist/esm/schema/alter-column-builder.js +7 -0
  256. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  257. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  258. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  259. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  260. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  261. package/dist/esm/schema/column-definition-builder.js +8 -1
  262. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  263. package/dist/esm/schema/create-index-builder.js +17 -0
  264. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  265. package/dist/esm/schema/create-schema-builder.js +7 -0
  266. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  267. package/dist/esm/schema/create-table-builder.js +3 -1
  268. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  269. package/dist/esm/schema/create-type-builder.js +7 -0
  270. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  271. package/dist/esm/schema/create-view-builder.js +7 -0
  272. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  273. package/dist/esm/schema/drop-index-builder.js +7 -0
  274. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  275. package/dist/esm/schema/drop-schema-builder.js +7 -0
  276. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  277. package/dist/esm/schema/drop-table-builder.js +7 -0
  278. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  279. package/dist/esm/schema/drop-type-builder.js +7 -0
  280. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  281. package/dist/esm/schema/drop-view-builder.js +7 -0
  282. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  283. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  284. package/dist/esm/util/compilable.d.ts +1 -0
  285. package/dist/esm/util/compilable.js +4 -1
  286. package/dist/esm/util/explainable.d.ts +35 -0
  287. package/dist/esm/util/log.d.ts +2 -0
  288. package/dist/esm/util/object-utils.js +1 -1
  289. package/dist/esm/util/streamable.d.ts +29 -0
  290. package/dist/esm/util/streamable.js +2 -0
  291. package/dist/esm/util/type-utils.d.ts +1 -0
  292. package/helpers/mysql.d.ts +1 -0
  293. package/helpers/mysql.js +1 -0
  294. package/helpers/postgres.d.ts +1 -0
  295. package/helpers/postgres.js +1 -0
  296. package/package.json +26 -9
  297. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  298. package/dist/cjs/query-builder/expression-builder.js +0 -107
  299. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  300. package/dist/esm/query-builder/expression-builder.js +0 -104
@@ -2,7 +2,7 @@ import { SelectQueryBuilder } from './query-builder/select-query-builder.js';
2
2
  import { InsertQueryBuilder } from './query-builder/insert-query-builder.js';
3
3
  import { DeleteQueryBuilder } from './query-builder/delete-query-builder.js';
4
4
  import { UpdateQueryBuilder } from './query-builder/update-query-builder.js';
5
- import { TableExpression, From, FromTables, TableReference } from './parser/table-parser.js';
5
+ import { TableExpression, From, FromTables, TableReference, ExtractTableAlias, AnyAliasedTable, PickTableWithAlias } from './parser/table-parser.js';
6
6
  import { QueryExecutor } from './query-executor/query-executor.js';
7
7
  import { CommonTableExpression, QueryCreatorWithCommonTableExpression, RecursiveCommonTableExpression } from './parser/with-parser.js';
8
8
  import { WithNode } from './operation-node/with-node.js';
@@ -120,7 +120,10 @@ export declare class QueryCreator<DB> {
120
120
  * (select 1 as one) as "q"
121
121
  * ```
122
122
  */
123
+ selectFrom<TE extends keyof DB & string>(from: TE[]): SelectQueryBuilder<DB, ExtractTableAlias<DB, TE>, {}>;
123
124
  selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, {}>;
125
+ selectFrom<TE extends keyof DB & string>(from: TE): SelectQueryBuilder<DB, ExtractTableAlias<DB, TE>, {}>;
126
+ selectFrom<TE extends AnyAliasedTable<DB>>(from: TE): SelectQueryBuilder<DB & PickTableWithAlias<DB, TE>, ExtractTableAlias<DB, TE>, {}>;
124
127
  selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, {}>;
125
128
  /**
126
129
  * Creates an insert query.
@@ -235,7 +238,9 @@ export declare class QueryCreator<DB> {
235
238
  * where `person`.`id` = ?
236
239
  * ```
237
240
  */
241
+ deleteFrom<TR extends keyof DB & string>(from: TR[]): DeleteQueryBuilder<DB, ExtractTableAlias<DB, TR>, DeleteResult>;
238
242
  deleteFrom<TR extends TableReference<DB>>(tables: TR[]): DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>;
243
+ deleteFrom<TR extends keyof DB & string>(from: TR): DeleteQueryBuilder<DB, ExtractTableAlias<DB, TR>, DeleteResult>;
239
244
  deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>;
240
245
  /**
241
246
  * Creates an update query.
@@ -260,6 +265,8 @@ export declare class QueryCreator<DB> {
260
265
  * console.log(result.numUpdatedRows)
261
266
  * ```
262
267
  */
268
+ updateTable<TR extends keyof DB & string>(table: TR): UpdateQueryBuilder<DB, ExtractTableAlias<DB, TR>, ExtractTableAlias<DB, TR>, UpdateResult>;
269
+ updateTable<TR extends AnyAliasedTable<DB>>(table: TR): UpdateQueryBuilder<DB & PickTableWithAlias<DB, TR>, ExtractTableAlias<DB, TR>, ExtractTableAlias<DB, TR>, UpdateResult>;
263
270
  updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, FromTables<DB, never, TR>, UpdateResult>;
264
271
  /**
265
272
  * Creates a `with` query (Common Table Expression).
@@ -324,7 +331,7 @@ export declare class QueryCreator<DB> {
324
331
  * This only affects the query created through the builder returned from
325
332
  * this method and doesn't modify the `db` instance.
326
333
  *
327
- * See [this recipe](https://github.com/koskimas/kysely/tree/master/recipes/schemas.md)
334
+ * See [this recipe](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/schemas.md)
328
335
  * for a more detailed explanation.
329
336
  *
330
337
  * ### Examples
@@ -110,29 +110,6 @@ export class QueryCreator {
110
110
  queryNode: DeleteQueryNode.create(parseTableExpressionOrList(tables), this.#props.withNode),
111
111
  });
112
112
  }
113
- /**
114
- * Creates an update query.
115
- *
116
- * See the {@link UpdateQueryBuilder.where} method for examples on how to specify
117
- * a where clause for the update operation.
118
- *
119
- * See the {@link UpdateQueryBuilder.set} method for examples on how to
120
- * specify the updates.
121
- *
122
- * The return value of the query is an {@link UpdateResult}.
123
- *
124
- * ### Examples
125
- *
126
- * ```ts
127
- * const result = await db
128
- * .updateTable('person')
129
- * .set({ first_name: 'Jennifer' })
130
- * .where('person.id', '=', 1)
131
- * .executeTakeFirst()
132
- *
133
- * console.log(result.numUpdatedRows)
134
- * ```
135
- */
136
113
  updateTable(table) {
137
114
  return new UpdateQueryBuilder({
138
115
  queryId: createQueryId(),
@@ -229,7 +206,7 @@ export class QueryCreator {
229
206
  * This only affects the query created through the builder returned from
230
207
  * this method and doesn't modify the `db` instance.
231
208
  *
232
- * See [this recipe](https://github.com/koskimas/kysely/tree/master/recipes/schemas.md)
209
+ * See [this recipe](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/schemas.md)
233
210
  * for a more detailed explanation.
234
211
  *
235
212
  * ### Examples
@@ -31,18 +31,18 @@ export interface QueryExecutor extends ConnectionProvider {
31
31
  * the output of {@link transformQuery} into this method but you can
32
32
  * compile any query using this method.
33
33
  */
34
- compileQuery(node: RootOperationNode, queryId: QueryId): CompiledQuery;
34
+ compileQuery<R = unknown>(node: RootOperationNode, queryId: QueryId): CompiledQuery<R>;
35
35
  /**
36
36
  * Executes a compiled query and runs the result through all plugins'
37
37
  * `transformResult` method.
38
38
  */
39
- executeQuery<R>(compiledQuery: CompiledQuery, queryId: QueryId): Promise<QueryResult<R>>;
39
+ executeQuery<R>(compiledQuery: CompiledQuery<R>, queryId: QueryId): Promise<QueryResult<R>>;
40
40
  /**
41
41
  * Executes a compiled query and runs the result through all plugins'
42
42
  * `transformResult` method. Results are streamead instead of loaded
43
43
  * at once.
44
44
  */
45
- stream<R>(compiledQuery: CompiledQuery,
45
+ stream<R>(compiledQuery: CompiledQuery<R>,
46
46
  /**
47
47
  * How many rows should be pulled from the database at once. Supported
48
48
  * only by the postgres driver.
@@ -1,6 +1,7 @@
1
1
  import { QueryResult } from '../driver/database-connection.js';
2
2
  import { AliasNode } from '../operation-node/alias-node.js';
3
3
  import { RawNode } from '../operation-node/raw-node.js';
4
+ import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
5
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
5
6
  import { QueryExecutorProvider } from '../query-executor/query-executor-provider.js';
6
7
  import { QueryId } from '../util/query-id.js';
@@ -86,7 +87,7 @@ export declare class RawBuilder<O> implements Expression<O> {
86
87
  * ```
87
88
  */
88
89
  as<A extends string>(alias: A): AliasedRawBuilder<O, A>;
89
- as<A extends string = never>(alias: Expression<any>): AliasedRawBuilder<O, A>;
90
+ as<A extends string>(alias: Expression<any>): AliasedRawBuilder<O, A>;
90
91
  /**
91
92
  * Change the output type of the raw expression.
92
93
  *
@@ -117,6 +118,7 @@ export declare class RawBuilder<O> implements Expression<O> {
117
118
  * ```
118
119
  */
119
120
  toOperationNode(): RawNode;
121
+ compile(executorProvider: QueryExecutorProvider): CompiledQuery<O>;
120
122
  execute(executorProvider: QueryExecutorProvider): Promise<QueryResult<O>>;
121
123
  }
122
124
  export declare function isRawBuilder(obj: unknown): obj is RawBuilder<unknown>;
@@ -125,7 +127,7 @@ export declare function isRawBuilder(obj: unknown): obj is RawBuilder<unknown>;
125
127
  */
126
128
  export declare class AliasedRawBuilder<O = unknown, A extends string = never> implements AliasedExpression<O, A> {
127
129
  #private;
128
- constructor(rawBuilder: RawBuilder<O>, alias: A | Expression<any>);
130
+ constructor(rawBuilder: RawBuilder<O>, alias: A | Expression<unknown>);
129
131
  /** @private */
130
132
  /**
131
133
  * Returns the aliased expression.
@@ -135,7 +137,7 @@ export declare class AliasedRawBuilder<O = unknown, A extends string = never> im
135
137
  /**
136
138
  * Returns the alias.
137
139
  */
138
- get alias(): A;
140
+ get alias(): A | Expression<unknown>;
139
141
  /**
140
142
  * Creates the OperationNode that describes how to compile this expression into SQL.
141
143
  */
@@ -50,17 +50,23 @@ export class RawBuilder {
50
50
  });
51
51
  }
52
52
  toOperationNode() {
53
- const executor = this.#props.plugins !== undefined
54
- ? NOOP_QUERY_EXECUTOR.withPlugins(this.#props.plugins)
55
- : NOOP_QUERY_EXECUTOR;
56
- return this.#toOperationNode(executor);
53
+ return this.#toOperationNode(this.#getExecutor());
54
+ }
55
+ compile(executorProvider) {
56
+ return this.#compile(this.#getExecutor(executorProvider));
57
57
  }
58
58
  async execute(executorProvider) {
59
- const executor = this.#props.plugins !== undefined
60
- ? executorProvider.getExecutor().withPlugins(this.#props.plugins)
61
- : executorProvider.getExecutor();
59
+ const executor = this.#getExecutor(executorProvider);
62
60
  return executor.executeQuery(this.#compile(executor), this.#props.queryId);
63
61
  }
62
+ #getExecutor(executorProvider) {
63
+ const executor = executorProvider !== undefined
64
+ ? executorProvider.getExecutor()
65
+ : NOOP_QUERY_EXECUTOR;
66
+ return this.#props.plugins !== undefined
67
+ ? executor.withPlugins(this.#props.plugins)
68
+ : executor;
69
+ }
64
70
  #toOperationNode(executor) {
65
71
  return executor.transformQuery(this.#props.rawNode, this.#props.queryId);
66
72
  }
@@ -18,7 +18,7 @@ export interface Sql {
18
18
  *
19
19
  * If you need your substitutions to be interpreted as identifiers, value literals or
20
20
  * lists of things, see the {@link Sql.ref}, {@link Sql.table}, {@link Sql.id},
21
- * {@link Sql.literal}, {@link Sql.raw} and {@link Sql.join} functions.
21
+ * {@link Sql.lit}, {@link Sql.raw} and {@link Sql.join} functions.
22
22
  *
23
23
  * You can pass sql snippets returned by the `sql` tag pretty much anywhere. Whenever
24
24
  * something can't be done using the Kysely API, you should be able to drop down to
@@ -98,13 +98,17 @@ export interface Sql {
98
98
  */
99
99
  <T = unknown>(sqlFragments: TemplateStringsArray, ...parameters: unknown[]): RawBuilder<T>;
100
100
  /**
101
- * `sql.value(value)` is a shortcut for:
101
+ * `sql.val(value)` is a shortcut for:
102
102
  *
103
103
  * ```ts
104
104
  * sql<ValueType>`${value}`
105
105
  * ```
106
106
  */
107
- value<T>(value: T): RawBuilder<T>;
107
+ val<V>(value: V): RawBuilder<V>;
108
+ /**
109
+ * @deprecated Use {@link Sql.val} instead.
110
+ */
111
+ value<V>(value: V): RawBuilder<V>;
108
112
  /**
109
113
  * This can be used to add runtime column references to SQL snippets.
110
114
  *
@@ -155,7 +159,7 @@ export interface Sql {
155
159
  * select "public"."person"."first_name" from person
156
160
  * ```
157
161
  */
158
- ref(columnReference: string): RawBuilder<unknown>;
162
+ ref<R = unknown>(columnReference: string): RawBuilder<R>;
159
163
  /**
160
164
  * This can be used to add runtime table references to SQL snippets.
161
165
  *
@@ -246,7 +250,7 @@ export interface Sql {
246
250
  * ```ts
247
251
  * const firstName = 'first_name'
248
252
  *
249
- * sql`select * from person where first_name = ${sql.literal(firstName)}`
253
+ * sql`select * from person where first_name = ${sql.lit(firstName)}`
250
254
  * ```
251
255
  *
252
256
  * The generated SQL (PostgreSQL):
@@ -259,7 +263,11 @@ export interface Sql {
259
263
  * the SQL string instead of as a parameter. Only use this function when
260
264
  * something can't be sent as a parameter.
261
265
  */
262
- literal(value: unknown): RawBuilder<unknown>;
266
+ lit<V>(value: V): RawBuilder<V>;
267
+ /**
268
+ * @deprecated Use {@link lit} instead.
269
+ */
270
+ literal<V>(value: V): RawBuilder<V>;
263
271
  /**
264
272
  * This can be used to add arbitrary runtime SQL to SQL snippets.
265
273
  *
@@ -278,11 +286,11 @@ export interface Sql {
278
286
  * select * from person where first_name = 'first_name'
279
287
  * ```
280
288
  *
281
- * Note that the difference to `sql.literal` is that this function
289
+ * Note that the difference to `sql.lit` is that this function
282
290
  * doesn't assume the inputs are values. The input to this function
283
291
  * can be any sql and it's simply glued to the parent string as-is.
284
292
  */
285
- raw(anySql: string): RawBuilder<unknown>;
293
+ raw<R = unknown>(anySql: string): RawBuilder<R>;
286
294
  /**
287
295
  * This can be used to add lists of things to SQL snippets.
288
296
  *
@@ -321,7 +329,7 @@ export interface Sql {
321
329
  * 123,
322
330
  * sql`(1 == 1)`,
323
331
  * db.selectFrom('person').selectAll(),
324
- * sql.literal(false),
332
+ * sql.lit(false),
325
333
  * sql.id('first_name')
326
334
  * ]
327
335
  *
@@ -19,12 +19,15 @@ export const sql = Object.assign((sqlFragments, ...parameters) => {
19
19
  rawNode: RawNode.createWithChild(parseStringReference(columnReference)),
20
20
  });
21
21
  },
22
- value(value) {
22
+ val(value) {
23
23
  return new RawBuilder({
24
24
  queryId: createQueryId(),
25
25
  rawNode: RawNode.createWithChild(parseValueExpression(value)),
26
26
  });
27
27
  },
28
+ value(value) {
29
+ return this.val(value);
30
+ },
28
31
  table(tableReference) {
29
32
  return new RawBuilder({
30
33
  queryId: createQueryId(),
@@ -40,12 +43,15 @@ export const sql = Object.assign((sqlFragments, ...parameters) => {
40
43
  rawNode: RawNode.create(fragments, ids.map(IdentifierNode.create)),
41
44
  });
42
45
  },
43
- literal(value) {
46
+ lit(value) {
44
47
  return new RawBuilder({
45
48
  queryId: createQueryId(),
46
49
  rawNode: RawNode.createWithChild(ValueNode.createImmediate(value)),
47
50
  });
48
51
  },
52
+ literal(value) {
53
+ return this.lit(value);
54
+ },
49
55
  raw(sql) {
50
56
  return new RawBuilder({
51
57
  queryId: createQueryId(),
@@ -10,6 +10,11 @@ export declare class AlterColumnBuilder {
10
10
  dropDefault(): AlteredColumnBuilder;
11
11
  setNotNull(): AlteredColumnBuilder;
12
12
  dropNotNull(): AlteredColumnBuilder;
13
+ /**
14
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
15
+ * what the provided function returns.
16
+ */
17
+ $call<T>(func: (qb: this) => T): T;
13
18
  }
14
19
  /**
15
20
  * Allows us to force consumers to do something, anything, when altering a column.
@@ -32,6 +32,13 @@ export class AlterColumnBuilder {
32
32
  dropNotNull: true,
33
33
  }));
34
34
  }
35
+ /**
36
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
37
+ * what the provided function returns.
38
+ */
39
+ $call(func) {
40
+ return func(this);
41
+ }
35
42
  }
36
43
  /**
37
44
  * Allows us to force consumers to do something, anything, when altering a column.
@@ -11,6 +11,11 @@ export declare class AlterTableAddForeignKeyConstraintBuilder implements Foreign
11
11
  constructor(props: AlterTableAddForeignKeyConstraintBuilderProps);
12
12
  onDelete(onDelete: OnModifyForeignAction): AlterTableAddForeignKeyConstraintBuilder;
13
13
  onUpdate(onUpdate: OnModifyForeignAction): AlterTableAddForeignKeyConstraintBuilder;
14
+ /**
15
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
16
+ * what the provided function returns.
17
+ */
18
+ $call<T>(func: (qb: this) => T): T;
14
19
  toOperationNode(): AlterTableNode;
15
20
  compile(): CompiledQuery;
16
21
  execute(): Promise<void>;
@@ -20,6 +20,13 @@ export class AlterTableAddForeignKeyConstraintBuilder {
20
20
  constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),
21
21
  });
22
22
  }
23
+ /**
24
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
25
+ * what the provided function returns.
26
+ */
27
+ $call(func) {
28
+ return func(this);
29
+ }
23
30
  toOperationNode() {
24
31
  return this.#props.executor.transformQuery(AlterTableNode.cloneWithTableProps(this.#props.node, {
25
32
  addConstraint: AddConstraintNode.create(this.#props.constraintBuilder.toOperationNode()),
@@ -10,6 +10,11 @@ export declare class AlterTableDropConstraintBuilder implements OperationNodeSou
10
10
  ifExists(): AlterTableDropConstraintBuilder;
11
11
  cascade(): AlterTableDropConstraintBuilder;
12
12
  restrict(): AlterTableDropConstraintBuilder;
13
+ /**
14
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
15
+ * what the provided function returns.
16
+ */
17
+ $call<T>(func: (qb: this) => T): T;
13
18
  toOperationNode(): AlterTableNode;
14
19
  compile(): CompiledQuery;
15
20
  execute(): Promise<void>;
@@ -38,6 +38,13 @@ export class AlterTableDropConstraintBuilder {
38
38
  }),
39
39
  });
40
40
  }
41
+ /**
42
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
43
+ * what the provided function returns.
44
+ */
45
+ $call(func) {
46
+ return func(this);
47
+ }
41
48
  toOperationNode() {
42
49
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
43
50
  }
@@ -191,7 +191,7 @@ export declare class ColumnDefinitionBuilder implements OperationNodeSource {
191
191
  * ```ts
192
192
  * db.schema.createTable('person')
193
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')}`))
194
+ * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`))
195
195
  * .execute()
196
196
  * ```
197
197
  *
@@ -205,6 +205,11 @@ export declare class ColumnDefinitionBuilder implements OperationNodeSource {
205
205
  * ```
206
206
  */
207
207
  modifyEnd(modifier: Expression<any>): ColumnDefinitionBuilder;
208
+ /**
209
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
210
+ * what the provided function returns.
211
+ */
212
+ $call<T>(func: (qb: this) => T): T;
208
213
  toOperationNode(): ColumnDefinitionNode;
209
214
  }
210
215
  export declare type ColumnDefinitionBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
@@ -265,7 +265,7 @@ export class ColumnDefinitionBuilder {
265
265
  * ```ts
266
266
  * db.schema.createTable('person')
267
267
  * .addColumn('id', 'integer', col => col.primaryKey())
268
- * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.literal('it is not polite to ask a woman her age')}`))
268
+ * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`))
269
269
  * .execute()
270
270
  * ```
271
271
  *
@@ -281,6 +281,13 @@ export class ColumnDefinitionBuilder {
281
281
  modifyEnd(modifier) {
282
282
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));
283
283
  }
284
+ /**
285
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
286
+ * what the provided function returns.
287
+ */
288
+ $call(func) {
289
+ return func(this);
290
+ }
284
291
  toOperationNode() {
285
292
  return this.#node;
286
293
  }
@@ -5,7 +5,10 @@ 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
7
  import { Expression } from '../expression/expression.js';
8
- export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
8
+ import { ComparisonOperatorExpression } from '../parser/binary-operation-parser.js';
9
+ import { ExpressionBuilder } from '../expression/expression-builder.js';
10
+ import { SqlBool } from '../util/type-utils.js';
11
+ export declare class CreateIndexBuilder<C = never> implements OperationNodeSource, Compilable {
9
12
  #private;
10
13
  constructor(props: CreateIndexBuilderProps);
11
14
  /**
@@ -13,27 +16,27 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
13
16
  *
14
17
  * If the index already exists, no error is thrown if this method has been called.
15
18
  */
16
- ifNotExists(): CreateIndexBuilder;
19
+ ifNotExists(): CreateIndexBuilder<C>;
17
20
  /**
18
21
  * Makes the index unique.
19
22
  */
20
- unique(): CreateIndexBuilder;
23
+ unique(): CreateIndexBuilder<C>;
21
24
  /**
22
25
  * Specifies the table for the index.
23
26
  */
24
- on(table: string): CreateIndexBuilder;
27
+ on(table: string): CreateIndexBuilder<C>;
25
28
  /**
26
29
  * Specifies the column for the index.
27
30
  *
28
31
  * Also see the `expression` for specifying an arbitrary expression.
29
32
  */
30
- column(column: string): CreateIndexBuilder;
33
+ column<CL extends string>(column: CL): CreateIndexBuilder<C | CL>;
31
34
  /**
32
35
  * Specifies a list of columns for the index.
33
36
  *
34
37
  * Also see the `expression` for specifying an arbitrary expression.
35
38
  */
36
- columns(columns: string[]): CreateIndexBuilder;
39
+ columns<CL extends string>(columns: CL[]): CreateIndexBuilder<C | CL>;
37
40
  /**
38
41
  * Specifies an arbitrary expression for the index.
39
42
  *
@@ -49,12 +52,51 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
49
52
  * .execute()
50
53
  * ```
51
54
  */
52
- expression(expression: Expression<any>): CreateIndexBuilder;
55
+ expression(expression: Expression<any>): CreateIndexBuilder<C>;
53
56
  /**
54
57
  * Specifies the index type.
55
58
  */
56
- using(indexType: IndexType): CreateIndexBuilder;
57
- using(indexType: string): CreateIndexBuilder;
59
+ using(indexType: IndexType): CreateIndexBuilder<C>;
60
+ using(indexType: string): CreateIndexBuilder<C>;
61
+ /**
62
+ * Adds a where clause to the query. This Effectively turns the index partial.
63
+ *
64
+ * ### Examples
65
+ *
66
+ * ```ts
67
+ * import { sql } from 'kysely'
68
+ *
69
+ * await db.schema
70
+ * .createIndex('orders_unbilled_index')
71
+ * .on('orders')
72
+ * .column('order_nr')
73
+ * .where(sql.ref('billed'), 'is not', true)
74
+ * .where('order_nr', 'like', '123%')
75
+ * ```
76
+ *
77
+ * The generated SQL (PostgreSQL):
78
+ *
79
+ * ```sql
80
+ * create index "orders_unbilled_index" on "orders" ("order_nr") where "billed" is not true and "order_nr" like '123%'
81
+ * ```
82
+ *
83
+ * Column names specified in {@link column} or {@link columns} are known at compile-time
84
+ * and can be referred to in the current query and context.
85
+ *
86
+ * Sometimes you may want to refer to columns that exist in the table but are not
87
+ * part of the current index. In that case you can refer to them using {@link sql}
88
+ * expressions.
89
+ *
90
+ * Parameters are always sent as literals due to database restrictions.
91
+ */
92
+ where(lhs: C | Expression<any>, op: ComparisonOperatorExpression, rhs: unknown): CreateIndexBuilder<C>;
93
+ where(factory: (qb: ExpressionBuilder<Record<string, Record<C & string, any>>, string>) => Expression<SqlBool>): CreateIndexBuilder<C>;
94
+ where(expression: Expression<any>): CreateIndexBuilder<C>;
95
+ /**
96
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
97
+ * what the provided function returns.
98
+ */
99
+ $call<T>(func: (qb: this) => T): T;
58
100
  toOperationNode(): CreateIndexNode;
59
101
  compile(): CompiledQuery;
60
102
  execute(): Promise<void>;
@@ -6,6 +6,9 @@ import { parseColumnName } from '../parser/reference-parser.js';
6
6
  import { parseTable } from '../parser/table-parser.js';
7
7
  import { preventAwait } from '../util/prevent-await.js';
8
8
  import { freeze } from '../util/object-utils.js';
9
+ import { parseWhere, } from '../parser/binary-operation-parser.js';
10
+ import { QueryNode } from '../operation-node/query-node.js';
11
+ import { ImmediateValueTransformer } from '../plugin/immediate-value/immediate-value-transformer.js';
9
12
  export class CreateIndexBuilder {
10
13
  #props;
11
14
  constructor(props) {
@@ -103,6 +106,20 @@ export class CreateIndexBuilder {
103
106
  }),
104
107
  });
105
108
  }
109
+ where(...args) {
110
+ const transformer = new ImmediateValueTransformer();
111
+ return new CreateIndexBuilder({
112
+ ...this.#props,
113
+ node: QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode(parseWhere(args))),
114
+ });
115
+ }
116
+ /**
117
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
118
+ * what the provided function returns.
119
+ */
120
+ $call(func) {
121
+ return func(this);
122
+ }
106
123
  toOperationNode() {
107
124
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
108
125
  }
@@ -8,6 +8,11 @@ export declare class CreateSchemaBuilder implements OperationNodeSource, Compila
8
8
  #private;
9
9
  constructor(props: CreateSchemaBuilderProps);
10
10
  ifNotExists(): CreateSchemaBuilder;
11
+ /**
12
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
13
+ * what the provided function returns.
14
+ */
15
+ $call<T>(func: (qb: this) => T): T;
11
16
  toOperationNode(): CreateSchemaNode;
12
17
  compile(): CompiledQuery;
13
18
  execute(): Promise<void>;
@@ -13,6 +13,13 @@ export class CreateSchemaBuilder {
13
13
  node: CreateSchemaNode.cloneWith(this.#props.node, { ifNotExists: true }),
14
14
  });
15
15
  }
16
+ /**
17
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
18
+ * what the provided function returns.
19
+ */
20
+ $call(func) {
21
+ return func(this);
22
+ }
16
23
  toOperationNode() {
17
24
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
18
25
  }
@@ -47,7 +47,9 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
47
47
  * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
48
48
  * .addColumn('last_name', 'varchar(255)')
49
49
  * .addColumn('bank_balance', 'numeric(8, 2)')
50
- * .addColumn('data', sql`some_type`)
50
+ * // You can specify any data type using the `sql` tag if the types
51
+ * // don't include it.
52
+ * .addColumn('data', sql`any_type_here`)
51
53
  * .addColumn('parent_id', 'integer', (col) =>
52
54
  * col.references('person.id').onDelete('cascade'))
53
55
  * )
@@ -75,7 +75,9 @@ export class CreateTableBuilder {
75
75
  * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
76
76
  * .addColumn('last_name', 'varchar(255)')
77
77
  * .addColumn('bank_balance', 'numeric(8, 2)')
78
- * .addColumn('data', sql`some_type`)
78
+ * // You can specify any data type using the `sql` tag if the types
79
+ * // don't include it.
80
+ * .addColumn('data', sql`any_type_here`)
79
81
  * .addColumn('parent_id', 'integer', (col) =>
80
82
  * col.references('person.id').onDelete('cascade'))
81
83
  * )
@@ -18,6 +18,11 @@ export declare class CreateTypeBuilder implements OperationNodeSource, Compilabl
18
18
  * ```
19
19
  */
20
20
  asEnum(values: string[]): CreateTypeBuilder;
21
+ /**
22
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
23
+ * what the provided function returns.
24
+ */
25
+ $call<T>(func: (qb: this) => T): T;
21
26
  compile(): CompiledQuery;
22
27
  execute(): Promise<void>;
23
28
  }
@@ -25,6 +25,13 @@ export class CreateTypeBuilder {
25
25
  node: CreateTypeNode.cloneWithEnum(this.#props.node, values),
26
26
  });
27
27
  }
28
+ /**
29
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
30
+ * what the provided function returns.
31
+ */
32
+ $call(func) {
33
+ return func(this);
34
+ }
28
35
  compile() {
29
36
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
30
37
  }
@@ -32,6 +32,11 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
32
32
  * into the query or raw expression passed to this method!
33
33
  */
34
34
  as(query: AnySelectQueryBuilder | RawBuilder<any>): CreateViewBuilder;
35
+ /**
36
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
37
+ * what the provided function returns.
38
+ */
39
+ $call<T>(func: (qb: this) => T): T;
35
40
  toOperationNode(): CreateViewNode;
36
41
  compile(): CompiledQuery;
37
42
  execute(): Promise<void>;