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
@@ -1,126 +0,0 @@
1
- import { SelectQueryBuilder } from './select-query-builder.js';
2
- import { TableExpression, From, FromTables } from '../parser/table-parser.js';
3
- import { FunctionModule } from './function-module.js';
4
- import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
5
- import { RawBuilder } from '../raw-builder/raw-builder.js';
6
- import { QueryExecutor } from '../query-executor/query-executor.js';
7
- export declare class ExpressionBuilder<DB, TB extends keyof DB> {
8
- #private;
9
- constructor(props: ExpressionBuilderProps);
10
- /**
11
- * Returns a {@link FunctionModule} that can be used to write type safe function
12
- * calls.
13
- *
14
- * The difference between this and {@link Kysely.fn} is that this one is more
15
- * type safe. You can only refer to columns visible to the part of the query
16
- * you are building. {@link Kysely.fn} allows you to refer to columns in any
17
- * table of the database even if it doesn't produce valid SQL.
18
- *
19
- * ```ts
20
- * await db.selectFrom('person')
21
- * .innerJoin('pet', 'pet.owner_id', 'person.id')
22
- * .select([
23
- * 'person.id',
24
- * (qb) => qb.fn.count('pet.id').as('pet_count')
25
- * ])
26
- * .groupBy('person.id')
27
- * .having(count('pet.id'), '>', 10)
28
- * .execute()
29
- * ```
30
- *
31
- * The generated SQL (PostgreSQL):
32
- *
33
- * ```sql
34
- * select "person"."id", count("pet"."id") as "pet_count"
35
- * from "person"
36
- * inner join "pet" on "pet"."owner_id" = "person"."id"
37
- * group by "person"."id"
38
- * having count("pet"."id") > $1
39
- * ```
40
- */
41
- get fn(): FunctionModule<DB, TB>;
42
- /**
43
- * Creates a subquery.
44
- *
45
- * The query builder returned by this method is typed in a way that you can refer to
46
- * all tables of the parent query in addition to the subquery's tables.
47
- *
48
- * This method accepts all the same inputs as {@link QueryCreator.selectFrom}.
49
- *
50
- * ### Examples
51
- *
52
- * This example shows that you can refer to both `pet.owner_id` and `person.id`
53
- * columns from the subquery. This is needed to be able to create correlated
54
- * subqueries:
55
- *
56
- * ```ts
57
- * const result = await db.selectFrom('pet')
58
- * .select([
59
- * 'pet.name',
60
- * (qb) => qb.selectFrom('person')
61
- * .whereRef('person.id', '=', 'pet.owner_id')
62
- * .select('person.first_name')
63
- * .as('owner_name')
64
- * ])
65
- * .execute()
66
- *
67
- * console.log(result[0].owner_name)
68
- * ```
69
- *
70
- * The generated SQL (PostgreSQL):
71
- *
72
- * ```sql
73
- * select
74
- * "pet"."name",
75
- * ( select "person"."first_name"
76
- * from "person"
77
- * where "person"."id" = "pet"."owner_id"
78
- * ) as "owner_name"
79
- * from "pet"
80
- * ```
81
- *
82
- * You can use a normal query in place of `(qb) => qb.selectFrom(...)` but in
83
- * that case Kysely typings wouldn't allow you to reference `pet.owner_id`
84
- * because `pet` is not joined to that query.
85
- */
86
- selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
87
- selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
88
- /**
89
- * See {@link QueryCreator.withSchema}
90
- */
91
- withSchema(schema: string): ExpressionBuilder<DB, TB>;
92
- /**
93
- * This can be used to reference columns.
94
- *
95
- * ### Examples
96
- *
97
- * In the next example we use the `ref` method to reference
98
- * columns of the virtual table `excluded` in a type-safe way
99
- * to create an upsert operation:
100
- *
101
- * ```ts
102
- * db.insertInto('person')
103
- * .values(person)
104
- * .onConflict(oc => oc
105
- * .column('id')
106
- * .doUpdateSet({
107
- * first_name: (eb) => eb.ref('excluded.first_name'),
108
- * last_name: (eb) => eb.ref('excluded.last_name')
109
- * })
110
- * )
111
- * ```
112
- *
113
- * In the next example we use `ref` in a raw sql expression. Unless you
114
- * want to be as type-safe as possible, this is probably overkill:
115
- *
116
- * ```ts
117
- * db.update('pet').set({
118
- * name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
119
- * })
120
- * ```
121
- */
122
- ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
123
- }
124
- export interface ExpressionBuilderProps {
125
- readonly executor: QueryExecutor;
126
- }
@@ -1,104 +0,0 @@
1
- /// <reference types="./expression-builder.d.ts" />
2
- import { SelectQueryBuilder } from './select-query-builder.js';
3
- import { SelectQueryNode } from '../operation-node/select-query-node.js';
4
- import { parseTableExpressionOrList, } from '../parser/table-parser.js';
5
- import { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';
6
- import { createQueryId } from '../util/query-id.js';
7
- import { FunctionModule } from './function-module.js';
8
- import { parseStringReference, } from '../parser/reference-parser.js';
9
- import { RawBuilder } from '../raw-builder/raw-builder.js';
10
- import { freeze } from '../util/object-utils.js';
11
- import { RawNode } from '../operation-node/raw-node.js';
12
- export class ExpressionBuilder {
13
- #props;
14
- constructor(props) {
15
- this.#props = freeze(props);
16
- }
17
- /**
18
- * Returns a {@link FunctionModule} that can be used to write type safe function
19
- * calls.
20
- *
21
- * The difference between this and {@link Kysely.fn} is that this one is more
22
- * type safe. You can only refer to columns visible to the part of the query
23
- * you are building. {@link Kysely.fn} allows you to refer to columns in any
24
- * table of the database even if it doesn't produce valid SQL.
25
- *
26
- * ```ts
27
- * await db.selectFrom('person')
28
- * .innerJoin('pet', 'pet.owner_id', 'person.id')
29
- * .select([
30
- * 'person.id',
31
- * (qb) => qb.fn.count('pet.id').as('pet_count')
32
- * ])
33
- * .groupBy('person.id')
34
- * .having(count('pet.id'), '>', 10)
35
- * .execute()
36
- * ```
37
- *
38
- * The generated SQL (PostgreSQL):
39
- *
40
- * ```sql
41
- * select "person"."id", count("pet"."id") as "pet_count"
42
- * from "person"
43
- * inner join "pet" on "pet"."owner_id" = "person"."id"
44
- * group by "person"."id"
45
- * having count("pet"."id") > $1
46
- * ```
47
- */
48
- get fn() {
49
- return new FunctionModule();
50
- }
51
- selectFrom(table) {
52
- return new SelectQueryBuilder({
53
- queryId: createQueryId(),
54
- executor: this.#props.executor,
55
- queryNode: SelectQueryNode.create(parseTableExpressionOrList(table)),
56
- });
57
- }
58
- /**
59
- * See {@link QueryCreator.withSchema}
60
- */
61
- withSchema(schema) {
62
- return new ExpressionBuilder({
63
- ...this.#props,
64
- executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),
65
- });
66
- }
67
- /**
68
- * This can be used to reference columns.
69
- *
70
- * ### Examples
71
- *
72
- * In the next example we use the `ref` method to reference
73
- * columns of the virtual table `excluded` in a type-safe way
74
- * to create an upsert operation:
75
- *
76
- * ```ts
77
- * db.insertInto('person')
78
- * .values(person)
79
- * .onConflict(oc => oc
80
- * .column('id')
81
- * .doUpdateSet({
82
- * first_name: (eb) => eb.ref('excluded.first_name'),
83
- * last_name: (eb) => eb.ref('excluded.last_name')
84
- * })
85
- * )
86
- * ```
87
- *
88
- * In the next example we use `ref` in a raw sql expression. Unless you
89
- * want to be as type-safe as possible, this is probably overkill:
90
- *
91
- * ```ts
92
- * db.update('pet').set({
93
- * name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
94
- * })
95
- * ```
96
- */
97
- ref(reference) {
98
- return new RawBuilder({
99
- queryId: createQueryId(),
100
- plugins: this.#props.executor.plugins,
101
- rawNode: RawNode.createWithChild(parseStringReference(reference)),
102
- });
103
- }
104
- }