kysely 0.23.5 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) 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/postgres.d.ts +133 -0
  15. package/dist/cjs/helpers/postgres.js +141 -0
  16. package/dist/cjs/index.d.ts +4 -3
  17. package/dist/cjs/index.js +4 -2
  18. package/dist/cjs/kysely.d.ts +10 -0
  19. package/dist/cjs/kysely.js +12 -1
  20. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  21. package/dist/cjs/migration/migrator.d.ts +5 -2
  22. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
  23. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  24. package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
  25. package/dist/cjs/operation-node/delete-query-node.js +0 -6
  26. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  27. package/dist/cjs/operation-node/function-node.js +19 -0
  28. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  29. package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
  30. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  31. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  32. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  33. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  34. package/dist/cjs/operation-node/operator-node.js +38 -3
  35. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  36. package/dist/cjs/operation-node/query-node.js +9 -2
  37. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  38. package/dist/cjs/operation-node/select-query-node.js +0 -6
  39. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  40. package/dist/cjs/operation-node/update-query-node.js +0 -6
  41. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  42. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  43. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  44. package/dist/cjs/parser/coalesce-parser.js +0 -9
  45. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  46. package/dist/cjs/parser/expression-parser.js +3 -3
  47. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  48. package/dist/cjs/parser/group-by-parser.js +3 -0
  49. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  50. package/dist/cjs/parser/insert-values-parser.js +19 -13
  51. package/dist/cjs/parser/join-parser.js +1 -1
  52. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  53. package/dist/cjs/parser/parse-utils.js +1 -8
  54. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  55. package/dist/cjs/parser/select-parser.d.ts +5 -13
  56. package/dist/cjs/parser/select-parser.js +8 -4
  57. package/dist/cjs/parser/table-parser.d.ts +5 -3
  58. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  59. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  60. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  61. package/dist/cjs/parser/update-set-parser.js +9 -4
  62. package/dist/cjs/parser/value-parser.d.ts +5 -0
  63. package/dist/cjs/parser/value-parser.js +1 -3
  64. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  65. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  66. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  67. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  68. package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
  69. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  70. package/dist/cjs/query-builder/delete-result.js +3 -0
  71. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  72. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  73. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  74. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  75. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  76. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  77. package/dist/cjs/query-builder/function-module.d.ts +40 -12
  78. package/dist/cjs/query-builder/function-module.js +43 -329
  79. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  80. package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
  81. package/dist/cjs/query-builder/insert-query-builder.js +21 -29
  82. package/dist/cjs/query-builder/insert-result.js +3 -0
  83. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  84. package/dist/cjs/query-builder/join-builder.js +17 -22
  85. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  86. package/dist/cjs/query-builder/no-result-error.js +5 -1
  87. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  88. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  89. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  90. package/dist/cjs/query-builder/over-builder.js +7 -0
  91. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  92. package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
  93. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  94. package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
  95. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  96. package/dist/cjs/query-builder/update-result.js +3 -0
  97. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  98. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  99. package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
  100. package/dist/cjs/query-creator.d.ts +9 -2
  101. package/dist/cjs/query-creator.js +1 -24
  102. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  103. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  104. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  105. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  106. package/dist/cjs/raw-builder/sql.js +8 -2
  107. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  108. package/dist/cjs/schema/alter-column-builder.js +7 -0
  109. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  110. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  111. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  112. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  113. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  114. package/dist/cjs/schema/column-definition-builder.js +8 -1
  115. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  116. package/dist/cjs/schema/create-index-builder.js +17 -0
  117. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  118. package/dist/cjs/schema/create-schema-builder.js +7 -0
  119. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  120. package/dist/cjs/schema/create-table-builder.js +3 -1
  121. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  122. package/dist/cjs/schema/create-type-builder.js +7 -0
  123. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  124. package/dist/cjs/schema/create-view-builder.js +7 -0
  125. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  126. package/dist/cjs/schema/drop-index-builder.js +7 -0
  127. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  128. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  129. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  130. package/dist/cjs/schema/drop-table-builder.js +7 -0
  131. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  132. package/dist/cjs/schema/drop-type-builder.js +7 -0
  133. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  134. package/dist/cjs/schema/drop-view-builder.js +7 -0
  135. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  136. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  137. package/dist/cjs/util/compilable.d.ts +1 -0
  138. package/dist/cjs/util/compilable.js +6 -0
  139. package/dist/cjs/util/explainable.d.ts +35 -0
  140. package/dist/cjs/util/log.d.ts +2 -0
  141. package/dist/cjs/util/object-utils.js +1 -1
  142. package/dist/cjs/util/streamable.d.ts +29 -0
  143. package/dist/cjs/util/streamable.js +2 -0
  144. package/dist/cjs/util/type-utils.d.ts +1 -0
  145. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  146. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  147. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  148. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  149. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  150. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  151. package/dist/esm/driver/runtime-driver.js +4 -2
  152. package/dist/esm/expression/expression-builder.d.ts +386 -0
  153. package/dist/esm/expression/expression-builder.js +88 -0
  154. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  155. package/dist/esm/expression/expression-wrapper.js +50 -0
  156. package/dist/esm/expression/expression.d.ts +1 -1
  157. package/dist/esm/helpers/postgres.d.ts +133 -0
  158. package/dist/esm/helpers/postgres.js +136 -0
  159. package/dist/esm/index.d.ts +4 -3
  160. package/dist/esm/index.js +2 -1
  161. package/dist/esm/kysely.d.ts +10 -0
  162. package/dist/esm/kysely.js +13 -2
  163. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  164. package/dist/esm/migration/migrator.d.ts +5 -2
  165. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
  166. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  167. package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
  168. package/dist/esm/operation-node/delete-query-node.js +0 -6
  169. package/dist/esm/operation-node/function-node.d.ts +13 -0
  170. package/dist/esm/operation-node/function-node.js +17 -0
  171. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  172. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  173. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  174. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  175. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  176. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  177. package/dist/esm/operation-node/operator-node.js +34 -3
  178. package/dist/esm/operation-node/query-node.d.ts +25 -8
  179. package/dist/esm/operation-node/query-node.js +9 -2
  180. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  181. package/dist/esm/operation-node/select-query-node.js +0 -6
  182. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  183. package/dist/esm/operation-node/update-query-node.js +0 -6
  184. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  185. package/dist/esm/parser/binary-operation-parser.js +85 -37
  186. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  187. package/dist/esm/parser/coalesce-parser.js +1 -7
  188. package/dist/esm/parser/expression-parser.d.ts +7 -3
  189. package/dist/esm/parser/expression-parser.js +3 -3
  190. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  191. package/dist/esm/parser/group-by-parser.js +3 -0
  192. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  193. package/dist/esm/parser/insert-values-parser.js +18 -12
  194. package/dist/esm/parser/join-parser.js +2 -2
  195. package/dist/esm/parser/parse-utils.d.ts +0 -2
  196. package/dist/esm/parser/parse-utils.js +0 -6
  197. package/dist/esm/parser/returning-parser.d.ts +2 -1
  198. package/dist/esm/parser/select-parser.d.ts +5 -13
  199. package/dist/esm/parser/select-parser.js +7 -3
  200. package/dist/esm/parser/table-parser.d.ts +5 -3
  201. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  202. package/dist/esm/parser/unary-operation-parser.js +8 -8
  203. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  204. package/dist/esm/parser/update-set-parser.js +7 -2
  205. package/dist/esm/parser/value-parser.d.ts +5 -0
  206. package/dist/esm/parser/value-parser.js +1 -3
  207. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  208. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  209. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  210. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  211. package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
  212. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  213. package/dist/esm/query-builder/delete-result.js +3 -0
  214. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  215. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  216. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  217. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  218. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  219. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  220. package/dist/esm/query-builder/function-module.d.ts +40 -12
  221. package/dist/esm/query-builder/function-module.js +42 -328
  222. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  223. package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
  224. package/dist/esm/query-builder/insert-query-builder.js +25 -33
  225. package/dist/esm/query-builder/insert-result.js +3 -0
  226. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  227. package/dist/esm/query-builder/join-builder.js +18 -23
  228. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  229. package/dist/esm/query-builder/no-result-error.js +3 -0
  230. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  231. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  232. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  233. package/dist/esm/query-builder/over-builder.js +7 -0
  234. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  235. package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
  236. package/dist/esm/query-builder/select-query-builder.js +337 -82
  237. package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
  238. package/dist/esm/query-builder/update-query-builder.js +25 -119
  239. package/dist/esm/query-builder/update-result.js +3 -0
  240. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  241. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  242. package/dist/esm/query-compiler/default-query-compiler.js +17 -1
  243. package/dist/esm/query-creator.d.ts +9 -2
  244. package/dist/esm/query-creator.js +1 -24
  245. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  246. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  247. package/dist/esm/raw-builder/raw-builder.js +13 -7
  248. package/dist/esm/raw-builder/sql.d.ts +17 -9
  249. package/dist/esm/raw-builder/sql.js +8 -2
  250. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  251. package/dist/esm/schema/alter-column-builder.js +7 -0
  252. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  253. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  254. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  255. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  256. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  257. package/dist/esm/schema/column-definition-builder.js +8 -1
  258. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  259. package/dist/esm/schema/create-index-builder.js +17 -0
  260. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  261. package/dist/esm/schema/create-schema-builder.js +7 -0
  262. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  263. package/dist/esm/schema/create-table-builder.js +3 -1
  264. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  265. package/dist/esm/schema/create-type-builder.js +7 -0
  266. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  267. package/dist/esm/schema/create-view-builder.js +7 -0
  268. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  269. package/dist/esm/schema/drop-index-builder.js +7 -0
  270. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  271. package/dist/esm/schema/drop-schema-builder.js +7 -0
  272. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  273. package/dist/esm/schema/drop-table-builder.js +7 -0
  274. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  275. package/dist/esm/schema/drop-type-builder.js +7 -0
  276. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  277. package/dist/esm/schema/drop-view-builder.js +7 -0
  278. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  279. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  280. package/dist/esm/util/compilable.d.ts +1 -0
  281. package/dist/esm/util/compilable.js +4 -1
  282. package/dist/esm/util/explainable.d.ts +35 -0
  283. package/dist/esm/util/log.d.ts +2 -0
  284. package/dist/esm/util/object-utils.js +1 -1
  285. package/dist/esm/util/streamable.d.ts +29 -0
  286. package/dist/esm/util/streamable.js +2 -0
  287. package/dist/esm/util/type-utils.d.ts +1 -0
  288. package/helpers/postgres.d.ts +1 -0
  289. package/helpers/postgres.js +1 -0
  290. package/package.json +20 -9
  291. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  292. package/dist/cjs/query-builder/expression-builder.js +0 -107
  293. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  294. 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
@@ -112,29 +112,6 @@ class QueryCreator {
112
112
  queryNode: delete_query_node_js_1.DeleteQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(tables), this.#props.withNode),
113
113
  });
114
114
  }
115
- /**
116
- * Creates an update query.
117
- *
118
- * See the {@link UpdateQueryBuilder.where} method for examples on how to specify
119
- * a where clause for the update operation.
120
- *
121
- * See the {@link UpdateQueryBuilder.set} method for examples on how to
122
- * specify the updates.
123
- *
124
- * The return value of the query is an {@link UpdateResult}.
125
- *
126
- * ### Examples
127
- *
128
- * ```ts
129
- * const result = await db
130
- * .updateTable('person')
131
- * .set({ first_name: 'Jennifer' })
132
- * .where('person.id', '=', 1)
133
- * .executeTakeFirst()
134
- *
135
- * console.log(result.numUpdatedRows)
136
- * ```
137
- */
138
115
  updateTable(table) {
139
116
  return new update_query_builder_js_1.UpdateQueryBuilder({
140
117
  queryId: (0, query_id_js_1.createQueryId)(),
@@ -231,7 +208,7 @@ class QueryCreator {
231
208
  * This only affects the query created through the builder returned from
232
209
  * this method and doesn't modify the `db` instance.
233
210
  *
234
- * See [this recipe](https://github.com/koskimas/kysely/tree/master/recipes/schemas.md)
211
+ * See [this recipe](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/schemas.md)
235
212
  * for a more detailed explanation.
236
213
  *
237
214
  * ### 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
  */
@@ -52,17 +52,23 @@ class RawBuilder {
52
52
  });
53
53
  }
54
54
  toOperationNode() {
55
- const executor = this.#props.plugins !== undefined
56
- ? noop_query_executor_js_1.NOOP_QUERY_EXECUTOR.withPlugins(this.#props.plugins)
57
- : noop_query_executor_js_1.NOOP_QUERY_EXECUTOR;
58
- return this.#toOperationNode(executor);
55
+ return this.#toOperationNode(this.#getExecutor());
56
+ }
57
+ compile(executorProvider) {
58
+ return this.#compile(this.#getExecutor(executorProvider));
59
59
  }
60
60
  async execute(executorProvider) {
61
- const executor = this.#props.plugins !== undefined
62
- ? executorProvider.getExecutor().withPlugins(this.#props.plugins)
63
- : executorProvider.getExecutor();
61
+ const executor = this.#getExecutor(executorProvider);
64
62
  return executor.executeQuery(this.#compile(executor), this.#props.queryId);
65
63
  }
64
+ #getExecutor(executorProvider) {
65
+ const executor = executorProvider !== undefined
66
+ ? executorProvider.getExecutor()
67
+ : noop_query_executor_js_1.NOOP_QUERY_EXECUTOR;
68
+ return this.#props.plugins !== undefined
69
+ ? executor.withPlugins(this.#props.plugins)
70
+ : executor;
71
+ }
66
72
  #toOperationNode(executor) {
67
73
  return executor.transformQuery(this.#props.rawNode, this.#props.queryId);
68
74
  }
@@ -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
  *
@@ -21,12 +21,15 @@ exports.sql = Object.assign((sqlFragments, ...parameters) => {
21
21
  rawNode: raw_node_js_1.RawNode.createWithChild((0, reference_parser_js_1.parseStringReference)(columnReference)),
22
22
  });
23
23
  },
24
- value(value) {
24
+ val(value) {
25
25
  return new raw_builder_js_1.RawBuilder({
26
26
  queryId: (0, query_id_js_1.createQueryId)(),
27
27
  rawNode: raw_node_js_1.RawNode.createWithChild((0, value_parser_js_1.parseValueExpression)(value)),
28
28
  });
29
29
  },
30
+ value(value) {
31
+ return this.val(value);
32
+ },
30
33
  table(tableReference) {
31
34
  return new raw_builder_js_1.RawBuilder({
32
35
  queryId: (0, query_id_js_1.createQueryId)(),
@@ -42,12 +45,15 @@ exports.sql = Object.assign((sqlFragments, ...parameters) => {
42
45
  rawNode: raw_node_js_1.RawNode.create(fragments, ids.map(identifier_node_js_1.IdentifierNode.create)),
43
46
  });
44
47
  },
45
- literal(value) {
48
+ lit(value) {
46
49
  return new raw_builder_js_1.RawBuilder({
47
50
  queryId: (0, query_id_js_1.createQueryId)(),
48
51
  rawNode: raw_node_js_1.RawNode.createWithChild(value_node_js_1.ValueNode.createImmediate(value)),
49
52
  });
50
53
  },
54
+ literal(value) {
55
+ return this.lit(value);
56
+ },
51
57
  raw(sql) {
52
58
  return new raw_builder_js_1.RawBuilder({
53
59
  queryId: (0, query_id_js_1.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.
@@ -34,6 +34,13 @@ class AlterColumnBuilder {
34
34
  dropNotNull: true,
35
35
  }));
36
36
  }
37
+ /**
38
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
39
+ * what the provided function returns.
40
+ */
41
+ $call(func) {
42
+ return func(this);
43
+ }
37
44
  }
38
45
  exports.AlterColumnBuilder = AlterColumnBuilder;
39
46
  /**
@@ -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>;
@@ -22,6 +22,13 @@ class AlterTableAddForeignKeyConstraintBuilder {
22
22
  constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),
23
23
  });
24
24
  }
25
+ /**
26
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
27
+ * what the provided function returns.
28
+ */
29
+ $call(func) {
30
+ return func(this);
31
+ }
25
32
  toOperationNode() {
26
33
  return this.#props.executor.transformQuery(alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
27
34
  addConstraint: add_constraint_node_js_1.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>;
@@ -40,6 +40,13 @@ class AlterTableDropConstraintBuilder {
40
40
  }),
41
41
  });
42
42
  }
43
+ /**
44
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
45
+ * what the provided function returns.
46
+ */
47
+ $call(func) {
48
+ return func(this);
49
+ }
43
50
  toOperationNode() {
44
51
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
45
52
  }
@@ -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;
@@ -267,7 +267,7 @@ class ColumnDefinitionBuilder {
267
267
  * ```ts
268
268
  * db.schema.createTable('person')
269
269
  * .addColumn('id', 'integer', col => col.primaryKey())
270
- * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.literal('it is not polite to ask a woman her age')}`))
270
+ * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`))
271
271
  * .execute()
272
272
  * ```
273
273
  *
@@ -283,6 +283,13 @@ class ColumnDefinitionBuilder {
283
283
  modifyEnd(modifier) {
284
284
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));
285
285
  }
286
+ /**
287
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
288
+ * what the provided function returns.
289
+ */
290
+ $call(func) {
291
+ return func(this);
292
+ }
286
293
  toOperationNode() {
287
294
  return this.#node;
288
295
  }
@@ -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>;
@@ -8,6 +8,9 @@ const reference_parser_js_1 = require("../parser/reference-parser.js");
8
8
  const table_parser_js_1 = require("../parser/table-parser.js");
9
9
  const prevent_await_js_1 = require("../util/prevent-await.js");
10
10
  const object_utils_js_1 = require("../util/object-utils.js");
11
+ const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
12
+ const query_node_js_1 = require("../operation-node/query-node.js");
13
+ const immediate_value_transformer_js_1 = require("../plugin/immediate-value/immediate-value-transformer.js");
11
14
  class CreateIndexBuilder {
12
15
  #props;
13
16
  constructor(props) {
@@ -105,6 +108,20 @@ class CreateIndexBuilder {
105
108
  }),
106
109
  });
107
110
  }
111
+ where(...args) {
112
+ const transformer = new immediate_value_transformer_js_1.ImmediateValueTransformer();
113
+ return new CreateIndexBuilder({
114
+ ...this.#props,
115
+ node: query_node_js_1.QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode((0, binary_operation_parser_js_1.parseWhere)(args))),
116
+ });
117
+ }
118
+ /**
119
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
120
+ * what the provided function returns.
121
+ */
122
+ $call(func) {
123
+ return func(this);
124
+ }
108
125
  toOperationNode() {
109
126
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
110
127
  }
@@ -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>;
@@ -15,6 +15,13 @@ class CreateSchemaBuilder {
15
15
  node: create_schema_node_js_1.CreateSchemaNode.cloneWith(this.#props.node, { ifNotExists: true }),
16
16
  });
17
17
  }
18
+ /**
19
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
20
+ * what the provided function returns.
21
+ */
22
+ $call(func) {
23
+ return func(this);
24
+ }
18
25
  toOperationNode() {
19
26
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
20
27
  }
@@ -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
  * )
@@ -77,7 +77,9 @@ class CreateTableBuilder {
77
77
  * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
78
78
  * .addColumn('last_name', 'varchar(255)')
79
79
  * .addColumn('bank_balance', 'numeric(8, 2)')
80
- * .addColumn('data', sql`some_type`)
80
+ * // You can specify any data type using the `sql` tag if the types
81
+ * // don't include it.
82
+ * .addColumn('data', sql`any_type_here`)
81
83
  * .addColumn('parent_id', 'integer', (col) =>
82
84
  * col.references('person.id').onDelete('cascade'))
83
85
  * )
@@ -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
  }
@@ -27,6 +27,13 @@ class CreateTypeBuilder {
27
27
  node: create_type_node_js_1.CreateTypeNode.cloneWithEnum(this.#props.node, values),
28
28
  });
29
29
  }
30
+ /**
31
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
32
+ * what the provided function returns.
33
+ */
34
+ $call(func) {
35
+ return func(this);
36
+ }
30
37
  compile() {
31
38
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
32
39
  }
@@ -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>;