kysely 0.26.3 → 0.27.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 (216) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/dialect/dialect-adapter-base.d.ts +8 -0
  3. package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
  4. package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
  5. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
  6. package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
  7. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
  8. package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
  9. package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
  10. package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
  11. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
  12. package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
  13. package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
  14. package/dist/cjs/dialect/mssql/mssql-introspector.js +99 -0
  15. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
  16. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
  17. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
  18. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
  19. package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
  20. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
  21. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
  22. package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
  23. package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
  24. package/dist/cjs/driver/driver.d.ts +1 -1
  25. package/dist/cjs/driver/driver.js +1 -0
  26. package/dist/cjs/driver/runtime-driver.js +5 -1
  27. package/dist/cjs/driver/single-connection-provider.js +7 -8
  28. package/dist/cjs/expression/expression-builder.d.ts +66 -75
  29. package/dist/cjs/expression/expression-builder.js +8 -17
  30. package/dist/cjs/expression/expression-wrapper.d.ts +21 -11
  31. package/dist/cjs/expression/expression-wrapper.js +12 -0
  32. package/dist/cjs/helpers/mssql.d.ts +152 -0
  33. package/dist/cjs/helpers/mssql.js +160 -0
  34. package/dist/cjs/index.d.ts +7 -1
  35. package/dist/cjs/index.js +6 -0
  36. package/dist/cjs/migration/migrator.js +12 -16
  37. package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
  38. package/dist/cjs/operation-node/add-index-node.js +31 -0
  39. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
  40. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  41. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  42. package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
  43. package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
  44. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
  45. package/dist/cjs/operation-node/limit-node.d.ts +2 -3
  46. package/dist/cjs/operation-node/limit-node.js +1 -2
  47. package/dist/cjs/operation-node/offset-node.d.ts +2 -3
  48. package/dist/cjs/operation-node/offset-node.js +1 -2
  49. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.js +19 -0
  51. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  52. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  53. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  54. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  55. package/dist/cjs/operation-node/operator-node.js +2 -0
  56. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -1
  57. package/dist/cjs/operation-node/select-modifier-node.js +2 -1
  58. package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
  59. package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
  60. package/dist/cjs/parser/binary-operation-parser.js +1 -1
  61. package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
  62. package/dist/cjs/parser/reference-parser.d.ts +2 -1
  63. package/dist/cjs/parser/update-set-parser.d.ts +5 -2
  64. package/dist/cjs/parser/update-set-parser.js +13 -3
  65. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +21 -4
  66. package/dist/cjs/query-builder/aggregate-function-builder.js +21 -0
  67. package/dist/cjs/query-builder/case-builder.d.ts +6 -5
  68. package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -7
  69. package/dist/cjs/query-builder/delete-query-builder.js +4 -3
  70. package/dist/cjs/query-builder/function-module.d.ts +96 -25
  71. package/dist/cjs/query-builder/function-module.js +17 -3
  72. package/dist/cjs/query-builder/having-interface.d.ts +3 -5
  73. package/dist/cjs/query-builder/insert-query-builder.d.ts +34 -12
  74. package/dist/cjs/query-builder/insert-query-builder.js +16 -5
  75. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  76. package/dist/cjs/query-builder/insert-result.js +8 -1
  77. package/dist/cjs/query-builder/json-path-builder.d.ts +5 -3
  78. package/dist/cjs/query-builder/json-path-builder.js +9 -3
  79. package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
  80. package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
  81. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  82. package/dist/cjs/query-builder/select-query-builder.d.ts +49 -31
  83. package/dist/cjs/query-builder/select-query-builder.js +12 -10
  84. package/dist/cjs/query-builder/update-query-builder.d.ts +23 -7
  85. package/dist/cjs/query-builder/update-query-builder.js +4 -4
  86. package/dist/cjs/query-builder/where-interface.d.ts +3 -3
  87. package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
  88. package/dist/cjs/query-compiler/default-query-compiler.js +73 -12
  89. package/dist/cjs/raw-builder/raw-builder.d.ts +11 -1
  90. package/dist/cjs/raw-builder/raw-builder.js +3 -0
  91. package/dist/cjs/raw-builder/sql.js +9 -2
  92. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
  93. package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
  94. package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
  95. package/dist/cjs/schema/alter-table-builder.js +59 -2
  96. package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
  97. package/dist/cjs/schema/column-definition-builder.js +27 -0
  98. package/dist/cjs/schema/create-index-builder.d.ts +23 -0
  99. package/dist/cjs/schema/create-index-builder.js +30 -0
  100. package/dist/cjs/schema/create-table-builder.d.ts +28 -2
  101. package/dist/cjs/schema/create-table-builder.js +38 -3
  102. package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
  103. package/dist/cjs/schema/unique-constraint-builder.js +24 -0
  104. package/dist/cjs/util/log.js +5 -1
  105. package/dist/cjs/util/object-utils.d.ts +2 -2
  106. package/dist/cjs/util/object-utils.js +1 -1
  107. package/dist/cjs/util/type-utils.d.ts +27 -19
  108. package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
  109. package/dist/esm/dialect/dialect-adapter-base.js +3 -0
  110. package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
  111. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
  112. package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
  113. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
  114. package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
  115. package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
  116. package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
  117. package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
  118. package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
  119. package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
  120. package/dist/esm/dialect/mssql/mssql-introspector.js +96 -0
  121. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
  122. package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
  123. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
  124. package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
  125. package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
  126. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
  127. package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
  128. package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
  129. package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
  130. package/dist/esm/driver/driver.d.ts +1 -1
  131. package/dist/esm/driver/driver.js +1 -0
  132. package/dist/esm/driver/runtime-driver.js +5 -1
  133. package/dist/esm/driver/single-connection-provider.js +7 -8
  134. package/dist/esm/expression/expression-builder.d.ts +66 -75
  135. package/dist/esm/expression/expression-builder.js +10 -19
  136. package/dist/esm/expression/expression-wrapper.d.ts +21 -11
  137. package/dist/esm/expression/expression-wrapper.js +12 -0
  138. package/dist/esm/helpers/mssql.d.ts +152 -0
  139. package/dist/esm/helpers/mssql.js +155 -0
  140. package/dist/esm/index.d.ts +7 -1
  141. package/dist/esm/index.js +6 -0
  142. package/dist/esm/migration/migrator.js +12 -16
  143. package/dist/esm/operation-node/add-index-node.d.ts +21 -0
  144. package/dist/esm/operation-node/add-index-node.js +29 -0
  145. package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
  146. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  147. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  148. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  149. package/dist/esm/operation-node/create-table-node.d.ts +1 -0
  150. package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
  151. package/dist/esm/operation-node/limit-node.d.ts +2 -3
  152. package/dist/esm/operation-node/limit-node.js +1 -2
  153. package/dist/esm/operation-node/offset-node.d.ts +2 -3
  154. package/dist/esm/operation-node/offset-node.js +1 -2
  155. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  156. package/dist/esm/operation-node/operation-node-transformer.js +19 -0
  157. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  158. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  159. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  160. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  161. package/dist/esm/operation-node/operator-node.js +2 -0
  162. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -1
  163. package/dist/esm/operation-node/select-modifier-node.js +2 -1
  164. package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
  165. package/dist/esm/operation-node/unique-constraint-node.js +8 -1
  166. package/dist/esm/parser/binary-operation-parser.js +1 -1
  167. package/dist/esm/parser/coalesce-parser.d.ts +12 -2
  168. package/dist/esm/parser/reference-parser.d.ts +2 -1
  169. package/dist/esm/parser/update-set-parser.d.ts +5 -2
  170. package/dist/esm/parser/update-set-parser.js +10 -1
  171. package/dist/esm/query-builder/aggregate-function-builder.d.ts +21 -4
  172. package/dist/esm/query-builder/aggregate-function-builder.js +21 -0
  173. package/dist/esm/query-builder/case-builder.d.ts +6 -5
  174. package/dist/esm/query-builder/delete-query-builder.d.ts +8 -7
  175. package/dist/esm/query-builder/delete-query-builder.js +4 -3
  176. package/dist/esm/query-builder/function-module.d.ts +96 -25
  177. package/dist/esm/query-builder/function-module.js +17 -3
  178. package/dist/esm/query-builder/having-interface.d.ts +3 -5
  179. package/dist/esm/query-builder/insert-query-builder.d.ts +34 -12
  180. package/dist/esm/query-builder/insert-query-builder.js +17 -6
  181. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  182. package/dist/esm/query-builder/insert-result.js +8 -1
  183. package/dist/esm/query-builder/json-path-builder.d.ts +5 -3
  184. package/dist/esm/query-builder/json-path-builder.js +9 -3
  185. package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
  186. package/dist/esm/query-builder/on-conflict-builder.js +2 -7
  187. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  188. package/dist/esm/query-builder/select-query-builder.d.ts +49 -31
  189. package/dist/esm/query-builder/select-query-builder.js +13 -11
  190. package/dist/esm/query-builder/update-query-builder.d.ts +23 -7
  191. package/dist/esm/query-builder/update-query-builder.js +5 -5
  192. package/dist/esm/query-builder/where-interface.d.ts +3 -3
  193. package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
  194. package/dist/esm/query-compiler/default-query-compiler.js +73 -12
  195. package/dist/esm/raw-builder/raw-builder.d.ts +11 -1
  196. package/dist/esm/raw-builder/raw-builder.js +3 -0
  197. package/dist/esm/raw-builder/sql.js +9 -2
  198. package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
  199. package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
  200. package/dist/esm/schema/alter-table-builder.d.ts +41 -1
  201. package/dist/esm/schema/alter-table-builder.js +59 -2
  202. package/dist/esm/schema/column-definition-builder.d.ts +25 -0
  203. package/dist/esm/schema/column-definition-builder.js +27 -0
  204. package/dist/esm/schema/create-index-builder.d.ts +23 -0
  205. package/dist/esm/schema/create-index-builder.js +30 -0
  206. package/dist/esm/schema/create-table-builder.d.ts +28 -2
  207. package/dist/esm/schema/create-table-builder.js +38 -3
  208. package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
  209. package/dist/esm/schema/unique-constraint-builder.js +21 -0
  210. package/dist/esm/util/log.js +5 -1
  211. package/dist/esm/util/object-utils.d.ts +2 -2
  212. package/dist/esm/util/object-utils.js +1 -1
  213. package/dist/esm/util/type-utils.d.ts +27 -19
  214. package/helpers/mssql.d.ts +1 -0
  215. package/helpers/mssql.js +1 -0
  216. package/package.json +15 -10
@@ -1,17 +1,15 @@
1
1
  import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
2
- import { ExpressionOrFactory } from '../parser/expression-parser.js';
3
2
  import { ReferenceExpression } from '../parser/reference-parser.js';
4
- import { SqlBool } from '../util/type-utils.js';
5
3
  export interface HavingInterface<DB, TB extends keyof DB> {
6
4
  /**
7
5
  * Just like {@link WhereInterface.where | where} but adds a `having` statement
8
6
  * instead of a `where` statement.
9
7
  */
10
- having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
11
- having(expression: ExpressionOrFactory<DB, TB, SqlBool>): HavingInterface<DB, TB>;
8
+ having<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): HavingInterface<DB, TB>;
9
+ having<E>(expression: E): HavingInterface<DB, TB>;
12
10
  /**
13
11
  * Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
14
12
  * instead of a `where` statement.
15
13
  */
16
- havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
14
+ havingRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): HavingInterface<DB, TB>;
17
15
  }
@@ -5,7 +5,7 @@ import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-
5
5
  import { InsertQueryNode } from '../operation-node/insert-query-node.js';
6
6
  import { QueryNode } from '../operation-node/query-node.js';
7
7
  import { NarrowPartial, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
8
- import { UpdateExpression } from '../parser/update-set-parser.js';
8
+ import { UpdateObjectExpression } from '../parser/update-set-parser.js';
9
9
  import { Compilable } from '../util/compilable.js';
10
10
  import { QueryExecutor } from '../query-executor/query-executor.js';
11
11
  import { QueryId } from '../util/query-id.js';
@@ -60,13 +60,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
60
60
  * })
61
61
  * .executeTakeFirst()
62
62
  *
63
+ * // `insertId` is only available on dialects that
64
+ * // automatically return the id of the inserted row
65
+ * // such as MySQL and SQLite. On PostgreSQL, for example,
66
+ * // you need to add a `returning` clause to the query to
67
+ * // get anything out. See the "returning data" example.
63
68
  * console.log(result.insertId)
64
69
  * ```
65
70
  *
66
- * The generated SQL (PostgreSQL):
71
+ * The generated SQL (MySQL):
67
72
  *
68
73
  * ```sql
69
- * insert into "person" ("first_name", "last_name", "age") values ($1, $2, $3)
74
+ * insert into `person` (`first_name`, `last_name`, `age`) values (?, ?, ?)
70
75
  * ```
71
76
  *
72
77
  * <!-- siteExample("insert", "Multiple rows", 20) -->
@@ -131,11 +136,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
131
136
  * ```ts
132
137
  * import { sql } from 'kysely'
133
138
  *
139
+ * const ani = "Ani"
140
+ * const ston = "ston"
141
+ *
134
142
  * const result = await db
135
143
  * .insertInto('person')
136
144
  * .values(({ ref, selectFrom, fn }) => ({
137
145
  * first_name: 'Jennifer',
138
- * last_name: sql`${'Ani'} || ${'ston'}`,
146
+ * last_name: sql`concat(${ani}, ${ston})`,
139
147
  * middle_name: ref('first_name'),
140
148
  * age: selectFrom('person')
141
149
  * .select(fn.avg<number>('age')
@@ -147,8 +155,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
147
155
  * The generated SQL (PostgreSQL):
148
156
  *
149
157
  * ```sql
150
- * insert into "person" ("first_name", "last_name", "age")
151
- * values ($1, $2 || $3, (select avg("age") as "avg_age" from "person"))
158
+ * insert into "person" (
159
+ * "first_name",
160
+ * "last_name",
161
+ * "middle_name",
162
+ * "age"
163
+ * )
164
+ * values (
165
+ * $1,
166
+ * concat($2, $3),
167
+ * "first_name",
168
+ * (select avg("age") as "avg_age" from "person")
169
+ * )
152
170
  * ```
153
171
  *
154
172
  * You can also use the callback version of subqueries or raw expressions:
@@ -208,7 +226,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
208
226
  * .select((eb) => [
209
227
  * 'pet.name',
210
228
  * eb.val('Petson').as('last_name'),
211
- * eb.val(7).as('age'),
229
+ * eb.lit(7).as('age'),
212
230
  * ])
213
231
  * )
214
232
  * .execute()
@@ -218,10 +236,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
218
236
  *
219
237
  * ```sql
220
238
  * insert into "person" ("first_name", "last_name", "age")
221
- * select "pet"."name", $1 as "first_name", $2 as "last_name" from "pet"
239
+ * select "pet"."name", $1 as "last_name", 7 as "age from "pet"
222
240
  * ```
223
241
  */
224
242
  expression(expression: ExpressionOrFactory<DB, TB, any>): InsertQueryBuilder<DB, TB, O>;
243
+ /**
244
+ * Creates an `insert into "person" default values` query.
245
+ */
246
+ defaultValues(): InsertQueryBuilder<DB, TB, O>;
225
247
  /**
226
248
  * Changes an `insert into` query to an `insert ignore into` query.
227
249
  *
@@ -414,7 +436,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
414
436
  * .onDuplicateKeyUpdate({ species: 'hamster' })
415
437
  * ```
416
438
  */
417
- onDuplicateKeyUpdate(update: UpdateExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
439
+ onDuplicateKeyUpdate(update: UpdateObjectExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
418
440
  /**
419
441
  * Allows you to return data from modified rows.
420
442
  *
@@ -545,10 +567,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
545
567
  /**
546
568
  * Change the output type of the query.
547
569
  *
548
- * You should only use this method as the last resort if the types
549
- * don't support your use case.
570
+ * This method call doesn't change the SQL in any way. This methods simply
571
+ * returns a copy of this `InsertQueryBuilder` with a new output type.
550
572
  */
551
- $castTo<T>(): InsertQueryBuilder<DB, TB, T>;
573
+ $castTo<C>(): InsertQueryBuilder<DB, TB, C>;
552
574
  /**
553
575
  * Narrows (parts of) the output type of the query.
554
576
  *
@@ -77,7 +77,7 @@ class InsertQueryBuilder {
77
77
  * .select((eb) => [
78
78
  * 'pet.name',
79
79
  * eb.val('Petson').as('last_name'),
80
- * eb.val(7).as('age'),
80
+ * eb.lit(7).as('age'),
81
81
  * ])
82
82
  * )
83
83
  * .execute()
@@ -87,7 +87,7 @@ class InsertQueryBuilder {
87
87
  *
88
88
  * ```sql
89
89
  * insert into "person" ("first_name", "last_name", "age")
90
- * select "pet"."name", $1 as "first_name", $2 as "last_name" from "pet"
90
+ * select "pet"."name", $1 as "last_name", 7 as "age from "pet"
91
91
  * ```
92
92
  */
93
93
  expression(expression) {
@@ -98,6 +98,17 @@ class InsertQueryBuilder {
98
98
  }),
99
99
  });
100
100
  }
101
+ /**
102
+ * Creates an `insert into "person" default values` query.
103
+ */
104
+ defaultValues() {
105
+ return new InsertQueryBuilder({
106
+ ...this.#props,
107
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
108
+ defaultValues: true,
109
+ }),
110
+ });
111
+ }
101
112
  /**
102
113
  * Changes an `insert into` query to an `insert ignore into` query.
103
114
  *
@@ -310,7 +321,7 @@ class InsertQueryBuilder {
310
321
  return new InsertQueryBuilder({
311
322
  ...this.#props,
312
323
  queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
313
- onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateExpression)(update)),
324
+ onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateObjectExpression)(update)),
314
325
  }),
315
326
  });
316
327
  }
@@ -398,8 +409,8 @@ class InsertQueryBuilder {
398
409
  /**
399
410
  * Change the output type of the query.
400
411
  *
401
- * You should only use this method as the last resort if the types
402
- * don't support your use case.
412
+ * This method call doesn't change the SQL in any way. This methods simply
413
+ * returns a copy of this `InsertQueryBuilder` with a new output type.
403
414
  */
404
415
  $castTo() {
405
416
  return new InsertQueryBuilder(this.#props);
@@ -23,7 +23,14 @@
23
23
  */
24
24
  export declare class InsertResult {
25
25
  /**
26
- * The auto incrementing primary key
26
+ * The auto incrementing primary key of the inserted row.
27
+ *
28
+ * This property can be undefined when the query contains an `on conflict`
29
+ * clause that makes the query succeed even when nothing gets inserted.
30
+ *
31
+ * This property is always undefined on dialects like PostgreSQL that
32
+ * don't return the inserted id by default. On those dialects you need
33
+ * to use the {@link ReturningInterface.returning | returning} method.
27
34
  */
28
35
  readonly insertId: bigint | undefined;
29
36
  /**
@@ -26,7 +26,14 @@ exports.InsertResult = void 0;
26
26
  */
27
27
  class InsertResult {
28
28
  /**
29
- * The auto incrementing primary key
29
+ * The auto incrementing primary key of the inserted row.
30
+ *
31
+ * This property can be undefined when the query contains an `on conflict`
32
+ * clause that makes the query succeed even when nothing gets inserted.
33
+ *
34
+ * This property is always undefined on dialects like PostgreSQL that
35
+ * don't return the inserted id by default. On those dialects you need
36
+ * to use the {@link ReturningInterface.returning | returning} method.
30
37
  */
31
38
  insertId;
32
39
  /**
@@ -1,10 +1,11 @@
1
1
  import { AliasableExpression, AliasedExpression, Expression } from '../expression/expression.js';
2
2
  import { AliasNode } from '../operation-node/alias-node.js';
3
+ import { JSONPathNode } from '../operation-node/json-path-node.js';
3
4
  import { JSONReferenceNode } from '../operation-node/json-reference-node.js';
4
5
  import { OperationNode } from '../operation-node/operation-node.js';
5
6
  export declare class JSONPathBuilder<S, O = S> {
6
7
  #private;
7
- constructor(node: JSONReferenceNode);
8
+ constructor(node: JSONReferenceNode | JSONPathNode);
8
9
  /**
9
10
  * Access an element of a JSON array in a specific location.
10
11
  *
@@ -123,7 +124,7 @@ export declare class JSONPathBuilder<S, O = S> {
123
124
  }
124
125
  export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O> implements AliasableExpression<O> {
125
126
  #private;
126
- constructor(node: JSONReferenceNode);
127
+ constructor(node: JSONReferenceNode | JSONPathNode);
127
128
  /** @private */
128
129
  /**
129
130
  * All expressions need to have this getter for complicated type-related reasons.
@@ -231,7 +232,8 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
231
232
  * This method call doesn't change the SQL in any way. This methods simply
232
233
  * returns a copy of this `JSONPathBuilder` with a new output type.
233
234
  */
234
- $castTo<T>(): JSONPathBuilder<T>;
235
+ $castTo<C>(): JSONPathBuilder<C>;
236
+ $notNull(): JSONPathBuilder<Exclude<O, null>>;
235
237
  /**
236
238
  * Creates the OperationNode that describes how to compile this expression into SQL.
237
239
  *
@@ -134,9 +134,12 @@ class JSONPathBuilder {
134
134
  return this.#createBuilderWithPathLeg('Member', key);
135
135
  }
136
136
  #createBuilderWithPathLeg(legType, value) {
137
- return new TraversedJSONPathBuilder(json_reference_node_js_1.JSONReferenceNode.cloneWithTraversal(this.#node, json_path_node_js_1.JSONPathNode.is(this.#node.traversal)
138
- ? json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node.traversal, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value))
139
- : json_operator_chain_node_js_1.JSONOperatorChainNode.cloneWithValue(this.#node.traversal, value_node_js_1.ValueNode.createImmediate(value))));
137
+ if (json_reference_node_js_1.JSONReferenceNode.is(this.#node)) {
138
+ return new TraversedJSONPathBuilder(json_reference_node_js_1.JSONReferenceNode.cloneWithTraversal(this.#node, json_path_node_js_1.JSONPathNode.is(this.#node.traversal)
139
+ ? json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node.traversal, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value))
140
+ : json_operator_chain_node_js_1.JSONOperatorChainNode.cloneWithValue(this.#node.traversal, value_node_js_1.ValueNode.createImmediate(value))));
141
+ }
142
+ return new TraversedJSONPathBuilder(json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value)));
140
143
  }
141
144
  }
142
145
  exports.JSONPathBuilder = JSONPathBuilder;
@@ -162,6 +165,9 @@ class TraversedJSONPathBuilder extends JSONPathBuilder {
162
165
  $castTo() {
163
166
  return new JSONPathBuilder(this.#node);
164
167
  }
168
+ $notNull() {
169
+ return new JSONPathBuilder(this.#node);
170
+ }
165
171
  toOperationNode() {
166
172
  return this.#node;
167
173
  }
@@ -4,7 +4,8 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
4
4
  import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
5
5
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
6
6
  import { ReferenceExpression } from '../parser/reference-parser.js';
7
- import { UpdateExpression } from '../parser/update-set-parser.js';
7
+ import { UpdateObjectExpression } from '../parser/update-set-parser.js';
8
+ import { Updateable } from '../util/column-type.js';
8
9
  import { AnyColumn, SqlBool } from '../util/type-utils.js';
9
10
  import { WhereInterface } from './where-interface.js';
10
11
  export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
@@ -40,12 +41,6 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
40
41
  * methods for alternative ways to specify the conflict target.
41
42
  */
42
43
  expression(expression: Expression<any>): OnConflictBuilder<DB, TB>;
43
- /**
44
- * Specify an index predicate for the index target.
45
- *
46
- * See {@link WhereInterface.where} for more info.
47
- */
48
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictBuilder<DB, TB>;
49
44
  /**
50
45
  * Adds a `where` expression to the query.
51
46
  *
@@ -345,13 +340,60 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
345
340
  * .execute()
346
341
  * ```
347
342
  */
348
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): OnConflictBuilder<DB, TB>;
343
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OnConflictBuilder<DB, TB>;
344
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): OnConflictBuilder<DB, TB>;
349
345
  /**
350
- * Specify an index predicate for the index target.
346
+ * Adds a `where` clause where both sides of the operator are references
347
+ * to columns.
351
348
  *
352
- * See {@link WhereInterface.whereRef} for more info.
349
+ * The normal `where` method treats the right hand side argument as a
350
+ * value by default. `whereRef` treats it as a column reference. This method is
351
+ * expecially useful with joins and correlated subqueries.
352
+ *
353
+ * ### Examples
354
+ *
355
+ * Usage with a join:
356
+ *
357
+ * ```ts
358
+ * db.selectFrom(['person', 'pet'])
359
+ * .selectAll()
360
+ * .whereRef('person.first_name', '=', 'pet.name')
361
+ * ```
362
+ *
363
+ * The generated SQL (PostgreSQL):
364
+ *
365
+ * ```sql
366
+ * select * from "person", "pet" where "person"."first_name" = "pet"."name"
367
+ * ```
368
+ *
369
+ * Usage in a subquery:
370
+ *
371
+ * ```ts
372
+ * const persons = await db
373
+ * .selectFrom('person')
374
+ * .selectAll('person')
375
+ * .select((eb) => eb
376
+ * .selectFrom('pet')
377
+ * .select('name')
378
+ * .whereRef('pet.owner_id', '=', 'person.id')
379
+ * .limit(1)
380
+ * .as('pet_name')
381
+ * )
382
+ * .execute()
383
+ * ```
384
+ *
385
+ * The generated SQL (PostgreSQL):
386
+ *
387
+ * ```sql
388
+ * select "person".*, (
389
+ * select "name"
390
+ * from "pet"
391
+ * where "pet"."owner_id" = "person"."id"
392
+ * limit $1
393
+ * ) as "pet_name"
394
+ * from "person"
353
395
  */
354
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): OnConflictBuilder<DB, TB>;
396
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): OnConflictBuilder<DB, TB>;
355
397
  /**
356
398
  * Clears all where expressions from the query.
357
399
  *
@@ -435,7 +477,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
435
477
  * )
436
478
  * ```
437
479
  */
438
- doUpdateSet(update: UpdateExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
480
+ doUpdateSet(update: UpdateObjectExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
439
481
  /**
440
482
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
441
483
  * what the provided function returns.
@@ -446,7 +488,7 @@ export interface OnConflictBuilderProps {
446
488
  readonly onConflictNode: OnConflictNode;
447
489
  }
448
490
  export type OnConflictDatabase<DB, TB extends keyof DB> = {
449
- [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
491
+ [K in keyof DB | 'excluded']: Updateable<K extends keyof DB ? DB[K] : DB[TB]>;
450
492
  };
451
493
  export type OnConflictTables<TB> = TB | 'excluded';
452
494
  export declare class OnConflictDoNothingBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
@@ -462,7 +504,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
462
504
  *
463
505
  * See {@link WhereInterface.where} for more info.
464
506
  */
465
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictUpdateBuilder<DB, TB>;
507
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OnConflictUpdateBuilder<DB, TB>;
466
508
  /**
467
509
  * Adds a `where` expression to the query.
468
510
  *
@@ -762,13 +804,13 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
762
804
  * .execute()
763
805
  * ```
764
806
  */
765
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): OnConflictUpdateBuilder<DB, TB>;
807
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): OnConflictUpdateBuilder<DB, TB>;
766
808
  /**
767
809
  * Specify a where condition for the update operation.
768
810
  *
769
811
  * See {@link WhereInterface.whereRef} for more info.
770
812
  */
771
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
813
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): OnConflictUpdateBuilder<DB, TB>;
772
814
  /**
773
815
  * Clears all where expressions from the query.
774
816
  *
@@ -83,11 +83,6 @@ class OnConflictBuilder {
83
83
  onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args)),
84
84
  });
85
85
  }
86
- /**
87
- * Specify an index predicate for the index target.
88
- *
89
- * See {@link WhereInterface.whereRef} for more info.
90
- */
91
86
  whereRef(lhs, op, rhs) {
92
87
  return new OnConflictBuilder({
93
88
  ...this.#props,
@@ -175,7 +170,7 @@ class OnConflictBuilder {
175
170
  return new OnConflictUpdateBuilder({
176
171
  ...this.#props,
177
172
  onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
178
- updates: (0, update_set_parser_js_1.parseUpdateExpression)(update),
173
+ updates: (0, update_set_parser_js_1.parseUpdateObjectExpression)(update),
179
174
  }),
180
175
  });
181
176
  }
@@ -28,7 +28,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
28
28
  * from "person"
29
29
  * ```
30
30
  */
31
- orderBy(orderBy: StringReference<DB, TB> | DynamicReferenceBuilder<any>, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
31
+ orderBy<OE extends StringReference<DB, TB> | DynamicReferenceBuilder<any>>(orderBy: OE, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
32
32
  /**
33
33
  * Adds partition by clause item/s inside the over function.
34
34
  *
@@ -51,7 +51,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
51
51
  * ```
52
52
  */
53
53
  partitionBy(partitionBy: ReadonlyArray<PartitionByExpression<DB, TB>>): OverBuilder<DB, TB>;
54
- partitionBy(partitionBy: PartitionByExpression<DB, TB>): OverBuilder<DB, TB>;
54
+ partitionBy<PE extends PartitionByExpression<DB, TB>>(partitionBy: PE): OverBuilder<DB, TB>;
55
55
  /**
56
56
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
57
57
  * what the provided function returns.