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
@@ -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
- }