kysely 0.9.8 → 0.11.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 (220) hide show
  1. package/README.md +22 -16
  2. package/dist/cjs/dialect/dialect-adapter.d.ts +3 -2
  3. package/dist/cjs/dialect/mysql/mysql-adapter.js +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +3 -3
  5. package/dist/cjs/dialect/mysql/mysql-driver.js +25 -32
  6. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +2 -2
  7. package/dist/cjs/dialect/postgres/postgres-driver.js +8 -19
  8. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +7 -0
  9. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +18 -0
  10. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +64 -0
  11. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +33 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +14 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-driver.js +116 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +7 -0
  15. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +31 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
  17. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +19 -0
  18. package/dist/cjs/driver/database-connection.d.ts +2 -2
  19. package/dist/cjs/driver/runtime-driver.js +3 -4
  20. package/dist/cjs/index.d.ts +10 -0
  21. package/dist/cjs/index.js +10 -0
  22. package/dist/cjs/kysely.d.ts +6 -4
  23. package/dist/cjs/kysely.js +6 -4
  24. package/dist/cjs/migration/migration.d.ts +1 -1
  25. package/dist/cjs/migration/migration.js +3 -3
  26. package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
  27. package/dist/cjs/operation-node/column-definition-node.js +4 -4
  28. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
  29. package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
  30. package/dist/cjs/operation-node/create-table-node.js +2 -2
  31. package/dist/cjs/operation-node/create-view-node.d.ts +23 -0
  32. package/dist/cjs/operation-node/create-view-node.js +25 -0
  33. package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
  34. package/dist/cjs/operation-node/default-value-node.js +18 -0
  35. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
  36. package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
  37. package/dist/cjs/operation-node/drop-schema-node.js +3 -3
  38. package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
  39. package/dist/cjs/operation-node/drop-table-node.js +2 -2
  40. package/dist/cjs/operation-node/drop-view-node.d.ts +17 -0
  41. package/dist/cjs/operation-node/drop-view-node.js +25 -0
  42. package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
  43. package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
  44. package/dist/cjs/operation-node/having-node.d.ts +4 -8
  45. package/dist/cjs/operation-node/having-node.js +3 -3
  46. package/dist/cjs/operation-node/join-node.d.ts +6 -9
  47. package/dist/cjs/operation-node/join-node.js +10 -7
  48. package/dist/cjs/operation-node/on-node.d.ts +14 -0
  49. package/dist/cjs/operation-node/on-node.js +28 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
  51. package/dist/cjs/operation-node/operation-node-transformer.js +55 -11
  52. package/dist/cjs/operation-node/operation-node-visitor.d.ts +11 -0
  53. package/dist/cjs/operation-node/operation-node-visitor.js +11 -2
  54. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  55. package/dist/cjs/operation-node/query-node.d.ts +3 -3
  56. package/dist/cjs/operation-node/raw-node.d.ts +1 -1
  57. package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
  58. package/dist/cjs/operation-node/select-query-node.js +1 -1
  59. package/dist/cjs/operation-node/where-node.d.ts +4 -8
  60. package/dist/cjs/operation-node/where-node.js +3 -3
  61. package/dist/cjs/parser/filter-parser.js +1 -1
  62. package/dist/cjs/parser/returning-parser.d.ts +4 -2
  63. package/dist/cjs/parser/select-parser.d.ts +2 -2
  64. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
  65. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +22 -0
  66. package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
  67. package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.js +21 -0
  68. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  69. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +6 -0
  70. package/dist/cjs/query-builder/delete-result.d.ts +5 -0
  71. package/dist/cjs/query-builder/delete-result.js +13 -0
  72. package/dist/cjs/query-builder/expression-builder.d.ts +2 -2
  73. package/dist/cjs/query-builder/expression-builder.js +1 -1
  74. package/dist/cjs/query-builder/function-builder.d.ts +5 -5
  75. package/dist/cjs/query-builder/function-builder.js +3 -3
  76. package/dist/cjs/query-builder/insert-result.d.ts +27 -0
  77. package/dist/cjs/query-builder/insert-result.js +35 -0
  78. package/dist/cjs/query-builder/query-builder.d.ts +91 -81
  79. package/dist/cjs/query-builder/query-builder.js +38 -41
  80. package/dist/cjs/query-builder/update-result.d.ts +5 -0
  81. package/dist/cjs/query-builder/update-result.js +13 -0
  82. package/dist/cjs/query-compiler/compiled-query.d.ts +5 -0
  83. package/dist/cjs/query-compiler/compiled-query.js +12 -0
  84. package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
  85. package/dist/cjs/query-compiler/default-query-compiler.js +82 -23
  86. package/dist/cjs/query-compiler/query-compiler.d.ts +3 -1
  87. package/dist/cjs/query-creator.d.ts +36 -26
  88. package/dist/cjs/query-creator.js +25 -17
  89. package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
  90. package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
  91. package/dist/cjs/schema/alter-table-builder.js +28 -4
  92. package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
  93. package/dist/cjs/schema/column-definition-builder.js +23 -6
  94. package/dist/cjs/schema/create-schema-builder.js +1 -1
  95. package/dist/cjs/schema/create-table-builder.d.ts +7 -8
  96. package/dist/cjs/schema/create-table-builder.js +8 -9
  97. package/dist/cjs/schema/create-view-builder.d.ts +28 -0
  98. package/dist/cjs/schema/create-view-builder.js +84 -0
  99. package/dist/cjs/schema/drop-index-builder.js +1 -1
  100. package/dist/cjs/schema/drop-schema-builder.js +3 -1
  101. package/dist/cjs/schema/drop-table-builder.js +3 -1
  102. package/dist/cjs/schema/drop-view-builder.d.ts +20 -0
  103. package/dist/cjs/schema/drop-view-builder.js +39 -0
  104. package/dist/cjs/schema/schema.d.ts +30 -3
  105. package/dist/cjs/schema/schema.js +44 -3
  106. package/dist/cjs/util/dynamic-import.d.ts +2 -0
  107. package/dist/cjs/util/dynamic-import.js +32 -0
  108. package/dist/cjs/util/performance-now.d.ts +1 -0
  109. package/dist/cjs/util/performance-now.js +13 -0
  110. package/dist/cjs/util/type-utils.d.ts +4 -15
  111. package/dist/esm/dialect/dialect-adapter.d.ts +3 -2
  112. package/dist/esm/dialect/mysql/mysql-adapter.js +1 -1
  113. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +3 -3
  114. package/dist/esm/dialect/mysql/mysql-driver.js +26 -33
  115. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +2 -2
  116. package/dist/esm/dialect/postgres/postgres-driver.js +8 -19
  117. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +7 -0
  118. package/dist/esm/dialect/sqlite/sqlite-adapter.js +14 -0
  119. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +64 -0
  120. package/dist/esm/dialect/sqlite/sqlite-dialect.js +29 -0
  121. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +14 -0
  122. package/dist/esm/dialect/sqlite/sqlite-driver.js +112 -0
  123. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +7 -0
  124. package/dist/esm/dialect/sqlite/sqlite-introspector.js +27 -0
  125. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
  126. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +15 -0
  127. package/dist/esm/driver/database-connection.d.ts +2 -2
  128. package/dist/esm/driver/runtime-driver.js +3 -4
  129. package/dist/esm/index.d.ts +10 -0
  130. package/dist/esm/index.js +10 -0
  131. package/dist/esm/kysely.d.ts +6 -4
  132. package/dist/esm/kysely.js +6 -4
  133. package/dist/esm/migration/migration.d.ts +1 -1
  134. package/dist/esm/migration/migration.js +3 -3
  135. package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
  136. package/dist/esm/operation-node/column-definition-node.js +4 -4
  137. package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
  138. package/dist/esm/operation-node/create-table-node.d.ts +2 -3
  139. package/dist/esm/operation-node/create-table-node.js +2 -2
  140. package/dist/esm/operation-node/create-view-node.d.ts +23 -0
  141. package/dist/esm/operation-node/create-view-node.js +22 -0
  142. package/dist/esm/operation-node/default-value-node.d.ts +14 -0
  143. package/dist/esm/operation-node/default-value-node.js +15 -0
  144. package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
  145. package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
  146. package/dist/esm/operation-node/drop-schema-node.js +3 -3
  147. package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
  148. package/dist/esm/operation-node/drop-table-node.js +2 -2
  149. package/dist/esm/operation-node/drop-view-node.d.ts +17 -0
  150. package/dist/esm/operation-node/drop-view-node.js +22 -0
  151. package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
  152. package/dist/esm/operation-node/generated-always-as-node.js +22 -0
  153. package/dist/esm/operation-node/having-node.d.ts +4 -8
  154. package/dist/esm/operation-node/having-node.js +3 -3
  155. package/dist/esm/operation-node/join-node.d.ts +6 -9
  156. package/dist/esm/operation-node/join-node.js +10 -7
  157. package/dist/esm/operation-node/on-node.d.ts +14 -0
  158. package/dist/esm/operation-node/on-node.js +25 -0
  159. package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
  160. package/dist/esm/operation-node/operation-node-transformer.js +55 -11
  161. package/dist/esm/operation-node/operation-node-visitor.d.ts +11 -0
  162. package/dist/esm/operation-node/operation-node-visitor.js +11 -2
  163. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  164. package/dist/esm/operation-node/query-node.d.ts +3 -3
  165. package/dist/esm/operation-node/raw-node.d.ts +1 -1
  166. package/dist/esm/operation-node/select-query-node.d.ts +5 -5
  167. package/dist/esm/operation-node/select-query-node.js +1 -1
  168. package/dist/esm/operation-node/where-node.d.ts +4 -8
  169. package/dist/esm/operation-node/where-node.js +3 -3
  170. package/dist/esm/parser/filter-parser.js +1 -1
  171. package/dist/esm/parser/returning-parser.d.ts +4 -2
  172. package/dist/esm/parser/select-parser.d.ts +2 -2
  173. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
  174. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +18 -0
  175. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
  176. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +17 -0
  177. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  178. package/dist/esm/plugin/with-schema/with-schema-transformer.js +6 -0
  179. package/dist/esm/query-builder/delete-result.d.ts +5 -0
  180. package/dist/esm/query-builder/delete-result.js +9 -0
  181. package/dist/esm/query-builder/expression-builder.d.ts +2 -2
  182. package/dist/esm/query-builder/expression-builder.js +1 -1
  183. package/dist/esm/query-builder/function-builder.d.ts +5 -5
  184. package/dist/esm/query-builder/function-builder.js +3 -3
  185. package/dist/esm/query-builder/insert-result.d.ts +27 -0
  186. package/dist/esm/query-builder/insert-result.js +31 -0
  187. package/dist/esm/query-builder/query-builder.d.ts +91 -81
  188. package/dist/esm/query-builder/query-builder.js +38 -41
  189. package/dist/esm/query-builder/update-result.d.ts +5 -0
  190. package/dist/esm/query-builder/update-result.js +9 -0
  191. package/dist/esm/query-compiler/compiled-query.d.ts +5 -0
  192. package/dist/esm/query-compiler/compiled-query.js +11 -1
  193. package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
  194. package/dist/esm/query-compiler/default-query-compiler.js +82 -23
  195. package/dist/esm/query-compiler/query-compiler.d.ts +3 -1
  196. package/dist/esm/query-creator.d.ts +36 -26
  197. package/dist/esm/query-creator.js +25 -17
  198. package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
  199. package/dist/esm/schema/alter-table-builder.d.ts +6 -2
  200. package/dist/esm/schema/alter-table-builder.js +28 -4
  201. package/dist/esm/schema/column-definition-builder.d.ts +43 -2
  202. package/dist/esm/schema/column-definition-builder.js +23 -6
  203. package/dist/esm/schema/create-schema-builder.js +1 -1
  204. package/dist/esm/schema/create-table-builder.d.ts +7 -8
  205. package/dist/esm/schema/create-table-builder.js +8 -9
  206. package/dist/esm/schema/create-view-builder.d.ts +28 -0
  207. package/dist/esm/schema/create-view-builder.js +80 -0
  208. package/dist/esm/schema/drop-index-builder.js +1 -1
  209. package/dist/esm/schema/drop-schema-builder.js +3 -1
  210. package/dist/esm/schema/drop-table-builder.js +3 -1
  211. package/dist/esm/schema/drop-view-builder.d.ts +20 -0
  212. package/dist/esm/schema/drop-view-builder.js +35 -0
  213. package/dist/esm/schema/schema.d.ts +30 -3
  214. package/dist/esm/schema/schema.js +44 -3
  215. package/dist/esm/util/dynamic-import.d.ts +2 -0
  216. package/dist/esm/util/dynamic-import.js +27 -0
  217. package/dist/esm/util/performance-now.d.ts +1 -0
  218. package/dist/esm/util/performance-now.js +9 -0
  219. package/dist/esm/util/type-utils.d.ts +4 -15
  220. package/package.json +5 -3
@@ -1,11 +1,13 @@
1
1
  import { QueryBuilder } from './query-builder/query-builder.js';
2
2
  import { QueryBuilderWithTable, TableExpression, TableReference } from './parser/table-parser.js';
3
- import { InsertResultTypeTag, DeleteResultTypeTag, UpdateResultTypeTag } from './util/type-utils.js';
4
3
  import { QueryExecutor } from './query-executor/query-executor.js';
5
4
  import { RawBuilder } from './raw-builder/raw-builder.js';
6
5
  import { CommonTableExpression, QueryCreatorWithCommonTableExpression } from './parser/with-parser.js';
7
6
  import { WithNode } from './operation-node/with-node.js';
8
7
  import { ParseContext } from './parser/parse-context.js';
8
+ import { InsertResult } from './query-builder/insert-result.js';
9
+ import { DeleteResult } from './query-builder/delete-result.js';
10
+ import { UpdateResult } from './query-builder/update-result.js';
9
11
  export declare class QueryCreator<DB> {
10
12
  #private;
11
13
  constructor(props: QueryCreatorProps);
@@ -21,7 +23,7 @@ export declare class QueryCreator<DB> {
21
23
  * db.selectFrom('person').selectAll()
22
24
  * ```
23
25
  *
24
- * The generated SQL (postgresql):
26
+ * The generated SQL (PostgreSQL):
25
27
  *
26
28
  * ```sql
27
29
  * select * from "person"
@@ -38,7 +40,7 @@ export declare class QueryCreator<DB> {
38
40
  * console.log(persons[0].id)
39
41
  * ```
40
42
  *
41
- * The generated SQL (postgresql):
43
+ * The generated SQL (PostgreSQL):
42
44
  *
43
45
  * ```sql
44
46
  * select "p"."id", "p"."first_name" from "person" as "p"
@@ -57,7 +59,7 @@ export declare class QueryCreator<DB> {
57
59
  * console.log(persons[0].identifier)
58
60
  * ```
59
61
  *
60
- * The generated SQL (postgresql):
62
+ * The generated SQL (PostgreSQL):
61
63
  *
62
64
  * ```sql
63
65
  * select "p"."identifier",
@@ -79,7 +81,7 @@ export declare class QueryCreator<DB> {
79
81
  * console.log(items[0].one)
80
82
  * ```
81
83
  *
82
- * The generated SQL (postgresql):
84
+ * The generated SQL (PostgreSQL):
83
85
  *
84
86
  * ```sql
85
87
  * select "q"."one",
@@ -106,7 +108,7 @@ export declare class QueryCreator<DB> {
106
108
  * .execute()
107
109
  * ```
108
110
  *
109
- * The generated SQL (postgresql):
111
+ * The generated SQL (PostgreSQL):
110
112
  *
111
113
  * ```sql
112
114
  * select "p".id, "a"."species", "q"."one"
@@ -121,20 +123,17 @@ export declare class QueryCreator<DB> {
121
123
  /**
122
124
  * Creates an insert query.
123
125
  *
124
- * The return value of this query is `number | undefined` because of the differences
125
- * between database engines. Most engines (like Mysql) return the auto incrementing
126
- * primary key (if it exists), but some (like postgres) return nothing by default.
127
- * If you are running a database engine like `Mysql` that always returns the primary
128
- * key, you can safely use `!` or the {@link QueryBuilder.castTo | castTo} method
129
- * to cast away the `undefined` from the type.
126
+ * The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}
127
+ * has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of
128
+ * the inserted row if the db returned one.
130
129
  *
131
130
  * See the {@link QueryBuilder.values | values} method for more info and examples. Also see
132
131
  * the {@link QueryBuilder.returning | returning} method for a way to return columns
133
- * on supported databases like postgres.
132
+ * on supported databases like PostgreSQL.
134
133
  *
135
134
  * @example
136
135
  * ```ts
137
- * const maybePrimaryKey: number | undefined = await db
136
+ * const result = await db
138
137
  * .insertInto('person')
139
138
  * .values({
140
139
  * id: db.generated,
@@ -142,10 +141,12 @@ export declare class QueryCreator<DB> {
142
141
  * last_name: 'Aniston'
143
142
  * })
144
143
  * .executeTakeFirst()
144
+ *
145
+ * console.log(result.insertId)
145
146
  * ```
146
147
  *
147
148
  * @example
148
- * Some databases like postgres support the `returning` method:
149
+ * Some databases like PostgreSQL support the `returning` method:
149
150
  *
150
151
  * ```ts
151
152
  * const { id } = await db
@@ -159,22 +160,26 @@ export declare class QueryCreator<DB> {
159
160
  * .executeTakeFirst()
160
161
  * ```
161
162
  */
162
- insertInto<T extends keyof DB & string>(table: T): QueryBuilder<DB, T, InsertResultTypeTag>;
163
+ insertInto<T extends keyof DB & string>(table: T): QueryBuilder<DB, T, InsertResult>;
163
164
  /**
164
165
  * Creates a delete query.
165
166
  *
166
167
  * See the {@link QueryBuilder.where} method for examples on how to specify
167
- * a where clause for the delete operation .
168
+ * a where clause for the delete operation.
169
+ *
170
+ * The return value of the query is an instance of {@link DeleteResult}.
168
171
  *
169
172
  * @example
170
173
  * ```ts
171
- * const numAffectedRows = await db
174
+ * const result = await db
172
175
  * .deleteFrom('person')
173
176
  * .where('person.id', '=', 1)
174
177
  * .executeTakeFirst()
178
+ *
179
+ * console.log(result.numDeletedRows)
175
180
  * ```
176
181
  */
177
- deleteFrom<TR extends TableReference<DB>>(table: TR): QueryBuilderWithTable<DB, never, DeleteResultTypeTag, TR>;
182
+ deleteFrom<TR extends TableReference<DB>>(table: TR): QueryBuilderWithTable<DB, never, DeleteResult, TR>;
178
183
  /**
179
184
  * Creates an update query.
180
185
  *
@@ -184,16 +189,20 @@ export declare class QueryCreator<DB> {
184
189
  * See the {@link QueryBuilder.set} method for examples on how to
185
190
  * specify the updates.
186
191
  *
192
+ * The return value of the query is an {@link UpdateResult}.
193
+ *
187
194
  * @example
188
195
  * ```ts
189
- * const numAffectedRows = await db
196
+ * const result = await db
190
197
  * .updateTable('person')
191
198
  * .set({ first_name: 'Jennifer' })
192
199
  * .where('person.id', '=', 1)
193
200
  * .executeTakeFirst()
201
+ *
202
+ * console.log(result.numUpdatedRows)
194
203
  * ```
195
204
  */
196
- updateTable<TR extends TableReference<DB>>(table: TR): QueryBuilderWithTable<DB, never, UpdateResultTypeTag, TR>;
205
+ updateTable<TR extends TableReference<DB>>(table: TR): QueryBuilderWithTable<DB, never, UpdateResult, TR>;
197
206
  /**
198
207
  * Creates a `with` query (common table expressions).
199
208
  *
@@ -233,7 +242,7 @@ export declare class QueryCreator<DB> {
233
242
  * .execute()
234
243
  * ```
235
244
  *
236
- * The generated SQL (postgresql):
245
+ * The generated SQL (PostgreSQL):
237
246
  *
238
247
  * ```sql
239
248
  * select * from "mammals"."pet"
@@ -253,7 +262,7 @@ export declare class QueryCreator<DB> {
253
262
  * .execute()
254
263
  * ```
255
264
  *
256
- * The generated SQL (postgresql):
265
+ * The generated SQL (PostgreSQL):
257
266
  *
258
267
  * ```sql
259
268
  * select "p"."name" from "mammals"."pet" as "p"
@@ -298,7 +307,7 @@ export declare class QueryCreator<DB> {
298
307
  * console.log(person.name)
299
308
  * ```
300
309
  *
301
- * The generated SQL (postgresql):
310
+ * The generated SQL (PostgreSQL):
302
311
  *
303
312
  * ```sql
304
313
  * select concat(first_name, ' ', last_name) as "name"
@@ -356,7 +365,7 @@ export declare class QueryCreator<DB> {
356
365
  * }
357
366
  * ```
358
367
  *
359
- * The generated SQL (postgresql):
368
+ * The generated SQL (PostgreSQL):
360
369
  *
361
370
  * ```sql
362
371
  * select * from "person" where now() - birth_date > interval $1 year
@@ -370,7 +379,8 @@ export declare class QueryCreator<DB> {
370
379
  * Example of creating a completely raw query from scratch:
371
380
  *
372
381
  * ```ts
373
- * const persons = await db.raw<Person>('select p.* from person p').execute()
382
+ * const result = await db.raw<Person>('select p.* from person p').execute()
383
+ * const persons = result.rows
374
384
  * ```
375
385
  *
376
386
  * For a raw query, you need to specify the type of the returned __row__. In
@@ -29,20 +29,17 @@ class QueryCreator {
29
29
  /**
30
30
  * Creates an insert query.
31
31
  *
32
- * The return value of this query is `number | undefined` because of the differences
33
- * between database engines. Most engines (like Mysql) return the auto incrementing
34
- * primary key (if it exists), but some (like postgres) return nothing by default.
35
- * If you are running a database engine like `Mysql` that always returns the primary
36
- * key, you can safely use `!` or the {@link QueryBuilder.castTo | castTo} method
37
- * to cast away the `undefined` from the type.
32
+ * The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}
33
+ * has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of
34
+ * the inserted row if the db returned one.
38
35
  *
39
36
  * See the {@link QueryBuilder.values | values} method for more info and examples. Also see
40
37
  * the {@link QueryBuilder.returning | returning} method for a way to return columns
41
- * on supported databases like postgres.
38
+ * on supported databases like PostgreSQL.
42
39
  *
43
40
  * @example
44
41
  * ```ts
45
- * const maybePrimaryKey: number | undefined = await db
42
+ * const result = await db
46
43
  * .insertInto('person')
47
44
  * .values({
48
45
  * id: db.generated,
@@ -50,10 +47,12 @@ class QueryCreator {
50
47
  * last_name: 'Aniston'
51
48
  * })
52
49
  * .executeTakeFirst()
50
+ *
51
+ * console.log(result.insertId)
53
52
  * ```
54
53
  *
55
54
  * @example
56
- * Some databases like postgres support the `returning` method:
55
+ * Some databases like PostgreSQL support the `returning` method:
57
56
  *
58
57
  * ```ts
59
58
  * const { id } = await db
@@ -79,14 +78,18 @@ class QueryCreator {
79
78
  * Creates a delete query.
80
79
  *
81
80
  * See the {@link QueryBuilder.where} method for examples on how to specify
82
- * a where clause for the delete operation .
81
+ * a where clause for the delete operation.
82
+ *
83
+ * The return value of the query is an instance of {@link DeleteResult}.
83
84
  *
84
85
  * @example
85
86
  * ```ts
86
- * const numAffectedRows = await db
87
+ * const result = await db
87
88
  * .deleteFrom('person')
88
89
  * .where('person.id', '=', 1)
89
90
  * .executeTakeFirst()
91
+ *
92
+ * console.log(result.numDeletedRows)
90
93
  * ```
91
94
  */
92
95
  deleteFrom(table) {
@@ -106,13 +109,17 @@ class QueryCreator {
106
109
  * See the {@link QueryBuilder.set} method for examples on how to
107
110
  * specify the updates.
108
111
  *
112
+ * The return value of the query is an {@link UpdateResult}.
113
+ *
109
114
  * @example
110
115
  * ```ts
111
- * const numAffectedRows = await db
116
+ * const result = await db
112
117
  * .updateTable('person')
113
118
  * .set({ first_name: 'Jennifer' })
114
119
  * .where('person.id', '=', 1)
115
120
  * .executeTakeFirst()
121
+ *
122
+ * console.log(result.numUpdatedRows)
116
123
  * ```
117
124
  */
118
125
  updateTable(table) {
@@ -170,7 +177,7 @@ class QueryCreator {
170
177
  * .execute()
171
178
  * ```
172
179
  *
173
- * The generated SQL (postgresql):
180
+ * The generated SQL (PostgreSQL):
174
181
  *
175
182
  * ```sql
176
183
  * select * from "mammals"."pet"
@@ -190,7 +197,7 @@ class QueryCreator {
190
197
  * .execute()
191
198
  * ```
192
199
  *
193
- * The generated SQL (postgresql):
200
+ * The generated SQL (PostgreSQL):
194
201
  *
195
202
  * ```sql
196
203
  * select "p"."name" from "mammals"."pet" as "p"
@@ -240,7 +247,7 @@ class QueryCreator {
240
247
  * console.log(person.name)
241
248
  * ```
242
249
  *
243
- * The generated SQL (postgresql):
250
+ * The generated SQL (PostgreSQL):
244
251
  *
245
252
  * ```sql
246
253
  * select concat(first_name, ' ', last_name) as "name"
@@ -298,7 +305,7 @@ class QueryCreator {
298
305
  * }
299
306
  * ```
300
307
  *
301
- * The generated SQL (postgresql):
308
+ * The generated SQL (PostgreSQL):
302
309
  *
303
310
  * ```sql
304
311
  * select * from "person" where now() - birth_date > interval $1 year
@@ -312,7 +319,8 @@ class QueryCreator {
312
319
  * Example of creating a completely raw query from scratch:
313
320
  *
314
321
  * ```ts
315
- * const persons = await db.raw<Person>('select p.* from person p').execute()
322
+ * const result = await db.raw<Person>('select p.* from person p').execute()
323
+ * const persons = result.rows
316
324
  * ```
317
325
  *
318
326
  * For a raw query, you need to specify the type of the returned __row__. In
@@ -41,5 +41,5 @@ export interface RawBuilderProps {
41
41
  readonly queryId: QueryId;
42
42
  readonly executor: QueryExecutor;
43
43
  readonly sql: string;
44
- readonly parameters?: any;
44
+ readonly parameters?: ReadonlyArray<unknown>;
45
45
  }
@@ -63,7 +63,7 @@ export interface AlterTableExecutorProps extends AlterTableBuilderProps {
63
63
  export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableAddColumnBuilder>, OperationNodeSource, Compilable {
64
64
  #private;
65
65
  constructor(props: AlterTableAddColumnBuilderProps);
66
- increments(): AlterTableAddColumnBuilder;
66
+ autoIncrement(): AlterTableAddColumnBuilder;
67
67
  primaryKey(): AlterTableAddColumnBuilder;
68
68
  references(ref: string): AlterTableAddColumnBuilder;
69
69
  onDelete(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
@@ -72,6 +72,8 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
72
72
  notNull(): AlterTableAddColumnBuilder;
73
73
  defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableAddColumnBuilder;
74
74
  check(sql: string): AlterTableAddColumnBuilder;
75
+ generatedAlwaysAs(sql: string): AlterTableAddColumnBuilder;
76
+ stored(): AlterTableAddColumnBuilder;
75
77
  toOperationNode(): AlterTableNode;
76
78
  compile(): CompiledQuery;
77
79
  execute(): Promise<void>;
@@ -82,7 +84,7 @@ export interface AlterTableAddColumnBuilderProps extends AlterTableBuilderProps
82
84
  export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableModifyColumnBuilder>, OperationNodeSource, Compilable {
83
85
  #private;
84
86
  constructor(props: AlterTableModifyColumnBuilderProps);
85
- increments(): AlterTableModifyColumnBuilder;
87
+ autoIncrement(): AlterTableModifyColumnBuilder;
86
88
  primaryKey(): AlterTableModifyColumnBuilder;
87
89
  references(ref: string): AlterTableModifyColumnBuilder;
88
90
  onDelete(onDelete: OnModifyForeignAction): AlterTableModifyColumnBuilder;
@@ -91,6 +93,8 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
91
93
  notNull(): AlterTableModifyColumnBuilder;
92
94
  defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableModifyColumnBuilder;
93
95
  check(sql: string): AlterTableModifyColumnBuilder;
96
+ generatedAlwaysAs(sql: string): AlterTableModifyColumnBuilder;
97
+ stored(): AlterTableModifyColumnBuilder;
94
98
  toOperationNode(): AlterTableNode;
95
99
  compile(): CompiledQuery;
96
100
  execute(): Promise<void>;
@@ -190,10 +190,10 @@ class AlterTableAddColumnBuilder {
190
190
  constructor(props) {
191
191
  this.#props = (0, object_utils_js_1.freeze)(props);
192
192
  }
193
- increments() {
193
+ autoIncrement() {
194
194
  return new AlterTableAddColumnBuilder({
195
195
  ...this.#props,
196
- columnBuilder: this.#props.columnBuilder.increments(),
196
+ columnBuilder: this.#props.columnBuilder.autoIncrement(),
197
197
  });
198
198
  }
199
199
  primaryKey() {
@@ -244,6 +244,18 @@ class AlterTableAddColumnBuilder {
244
244
  columnBuilder: this.#props.columnBuilder.check(sql),
245
245
  });
246
246
  }
247
+ generatedAlwaysAs(sql) {
248
+ return new AlterTableAddColumnBuilder({
249
+ ...this.#props,
250
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
251
+ });
252
+ }
253
+ stored() {
254
+ return new AlterTableAddColumnBuilder({
255
+ ...this.#props,
256
+ columnBuilder: this.#props.columnBuilder.stored(),
257
+ });
258
+ }
247
259
  toOperationNode() {
248
260
  return this.#props.executor.transformQuery(alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
249
261
  addColumn: add_column_node_js_1.AddColumnNode.create(this.#props.columnBuilder.toOperationNode()),
@@ -262,10 +274,10 @@ class AlterTableModifyColumnBuilder {
262
274
  constructor(props) {
263
275
  this.#props = (0, object_utils_js_1.freeze)(props);
264
276
  }
265
- increments() {
277
+ autoIncrement() {
266
278
  return new AlterTableModifyColumnBuilder({
267
279
  ...this.#props,
268
- columnBuilder: this.#props.columnBuilder.increments(),
280
+ columnBuilder: this.#props.columnBuilder.autoIncrement(),
269
281
  });
270
282
  }
271
283
  primaryKey() {
@@ -316,6 +328,18 @@ class AlterTableModifyColumnBuilder {
316
328
  columnBuilder: this.#props.columnBuilder.check(sql),
317
329
  });
318
330
  }
331
+ generatedAlwaysAs(sql) {
332
+ return new AlterTableModifyColumnBuilder({
333
+ ...this.#props,
334
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
335
+ });
336
+ }
337
+ stored() {
338
+ return new AlterTableModifyColumnBuilder({
339
+ ...this.#props,
340
+ columnBuilder: this.#props.columnBuilder.stored(),
341
+ });
342
+ }
319
343
  toOperationNode() {
320
344
  return this.#props.executor.transformQuery(alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
321
345
  modifyColumn: modify_column_node_js_1.ModifyColumnNode.create(this.#props.columnBuilder.toOperationNode()),
@@ -12,7 +12,7 @@ export interface ColumnDefinitionBuilderInterface<R> {
12
12
  * Some dialects like PostgreSQL don't support this. On PostgreSQL
13
13
  * you can use the `serial` or `bigserial` data type instead.
14
14
  */
15
- increments(): R;
15
+ autoIncrement(): R;
16
16
  /**
17
17
  * Makes the column the primary key.
18
18
  *
@@ -40,10 +40,19 @@ export interface ColumnDefinitionBuilderInterface<R> {
40
40
  * column definition (like MySQL 5) you need to call the table level
41
41
  * {@link TableBuilder.addForeignKeyConstraint} method instead.
42
42
  *
43
+ * @example
44
+ * ```ts
45
+ * col.references('person.id').onDelete('cascade')
46
+ * ```
43
47
  */
44
48
  onDelete(onDelete: OnModifyForeignAction): R;
45
49
  /**
46
50
  * Adds an `on update` constraint for the foreign key column.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * col.references('person.id').onUpdate('cascade')
55
+ * ```
47
56
  */
48
57
  onUpdate(onUpdate: OnModifyForeignAction): R;
49
58
  /**
@@ -78,11 +87,41 @@ export interface ColumnDefinitionBuilderInterface<R> {
78
87
  * ```
79
88
  */
80
89
  check(sql: string): R;
90
+ /**
91
+ * Makes the column a generated column using a `generated always as` statement.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * db.schema
96
+ * .createTable('person')
97
+ * .addColumn('full_name', 'varchar(255)',
98
+ * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
99
+ * )
100
+ * .execute()
101
+ * ```
102
+ */
103
+ generatedAlwaysAs(sql: string): R;
104
+ /**
105
+ * Makes a generated column stored instead of virtual. This method can only
106
+ * be used with {@link generatedAlwaysAs}
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * db.schema
111
+ * .createTable('person')
112
+ * .addColumn('full_name', 'varchar(255)', (col) => col
113
+ * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
114
+ * .stored()
115
+ * )
116
+ * .execute()
117
+ * ```
118
+ */
119
+ stored(): R;
81
120
  }
82
121
  export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderInterface<ColumnDefinitionBuilder>, OperationNodeSource {
83
122
  #private;
84
123
  constructor(node: ColumnDefinitionNode);
85
- increments(): ColumnDefinitionBuilder;
124
+ autoIncrement(): ColumnDefinitionBuilder;
86
125
  primaryKey(): ColumnDefinitionBuilder;
87
126
  references(ref: string): ColumnDefinitionBuilder;
88
127
  onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
@@ -91,5 +130,7 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
91
130
  notNull(): ColumnDefinitionBuilder;
92
131
  defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
93
132
  check(sql: string): ColumnDefinitionBuilder;
133
+ generatedAlwaysAs(sql: string): ColumnDefinitionBuilder;
134
+ stored(): ColumnDefinitionBuilder;
94
135
  toOperationNode(): ColumnDefinitionNode;
95
136
  }
@@ -9,16 +9,18 @@ const reference_parser_js_1 = require("../parser/reference-parser.js");
9
9
  const prevent_await_js_1 = require("../util/prevent-await.js");
10
10
  const column_definition_node_js_1 = require("../operation-node/column-definition-node.js");
11
11
  const default_value_parser_js_1 = require("../parser/default-value-parser.js");
12
+ const generated_always_as_node_js_1 = require("../operation-node/generated-always-as-node.js");
13
+ const default_value_node_js_1 = require("../operation-node/default-value-node.js");
12
14
  class ColumnDefinitionBuilder {
13
15
  #node;
14
16
  constructor(node) {
15
17
  this.#node = node;
16
18
  }
17
- increments() {
18
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isAutoIncrementing: true }));
19
+ autoIncrement() {
20
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));
19
21
  }
20
22
  primaryKey() {
21
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isPrimaryKey: true }));
23
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));
22
24
  }
23
25
  references(ref) {
24
26
  const references = (0, reference_parser_js_1.parseStringReference)(ref);
@@ -48,14 +50,14 @@ class ColumnDefinitionBuilder {
48
50
  }));
49
51
  }
50
52
  unique() {
51
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isUnique: true }));
53
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
52
54
  }
53
55
  notNull() {
54
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isNullable: false }));
56
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { nullable: false }));
55
57
  }
56
58
  defaultTo(value) {
57
59
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
58
- defaultTo: (0, default_value_parser_js_1.parseDefaultValueExpression)(value),
60
+ defaultTo: default_value_node_js_1.DefaultValueNode.create((0, default_value_parser_js_1.parseDefaultValueExpression)(value)),
59
61
  }));
60
62
  }
61
63
  check(sql) {
@@ -63,6 +65,21 @@ class ColumnDefinitionBuilder {
63
65
  check: check_constraint_node_js_1.CheckConstraintNode.create(sql),
64
66
  }));
65
67
  }
68
+ generatedAlwaysAs(sql) {
69
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
70
+ generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.create(sql),
71
+ }));
72
+ }
73
+ stored() {
74
+ if (!this.#node.generatedAlwaysAs) {
75
+ throw new Error('stored() can only be called after generatedAlwaysAs');
76
+ }
77
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
78
+ generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.cloneWith(this.#node.generatedAlwaysAs, {
79
+ stored: true,
80
+ }),
81
+ }));
82
+ }
66
83
  toOperationNode() {
67
84
  return this.#node;
68
85
  }
@@ -12,7 +12,7 @@ class CreateSchemaBuilder {
12
12
  ifNotExists() {
13
13
  return new CreateSchemaBuilder({
14
14
  ...this.#props,
15
- createSchemaNode: create_schema_node_js_1.CreateSchemaNode.cloneWith(this.#props.createSchemaNode, { modifier: 'IfNotExists' }),
15
+ createSchemaNode: create_schema_node_js_1.CreateSchemaNode.cloneWith(this.#props.createSchemaNode, { ifNotExists: true }),
16
16
  });
17
17
  }
18
18
  toOperationNode() {
@@ -26,9 +26,9 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
26
26
  * ```ts
27
27
  * await db.schema
28
28
  * .createTable('person')
29
- * .addColumn('id', 'integer', (col) => col.increments().primaryKey()),
30
- * .addColumn('first_name', 'varchar(50), (col) => col.notNull())
31
- * .addColumn('last_name', 'varchar')
29
+ * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
30
+ * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
31
+ * .addColumn('last_name', 'varchar(255)')
32
32
  * .addColumn('bank_balance', 'numeric(8, 2)')
33
33
  * .addColumn('data', db.raw('customtype'))
34
34
  * .addColumn('parent_id', 'integer', (col) =>
@@ -37,11 +37,10 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
37
37
  * ```
38
38
  *
39
39
  * With this method, it's once again good to remember that Kysely just builds the query
40
- * that's as close to the structure of your builder method calls as possible, and doesn't
41
- * provide the same API for all databses. For example, some databases like older MySQL
42
- * don't support `references` statement in the column definition. Instead foreign key
43
- * constraints need to be defined in at the level of the `create table` query. See
44
- * the next example:
40
+ * and doesn't provide the same API for all databses. For example, some databases like
41
+ * older MySQL don't support `references` statement in the column definition. Instead
42
+ * foreign key constraints need to be defined in at the level of the `create table`
43
+ * query. See the next example:
45
44
  *
46
45
  * @example
47
46
  * ```ts
@@ -30,7 +30,7 @@ class CreateTableBuilder {
30
30
  ifNotExists() {
31
31
  return new CreateTableBuilder({
32
32
  ...this.#props,
33
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithModifier(this.#props.createTableNode, 'IfNotExists'),
33
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithIfNotExists(this.#props.createTableNode, true),
34
34
  });
35
35
  }
36
36
  /**
@@ -40,9 +40,9 @@ class CreateTableBuilder {
40
40
  * ```ts
41
41
  * await db.schema
42
42
  * .createTable('person')
43
- * .addColumn('id', 'integer', (col) => col.increments().primaryKey()),
44
- * .addColumn('first_name', 'varchar(50), (col) => col.notNull())
45
- * .addColumn('last_name', 'varchar')
43
+ * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
44
+ * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
45
+ * .addColumn('last_name', 'varchar(255)')
46
46
  * .addColumn('bank_balance', 'numeric(8, 2)')
47
47
  * .addColumn('data', db.raw('customtype'))
48
48
  * .addColumn('parent_id', 'integer', (col) =>
@@ -51,11 +51,10 @@ class CreateTableBuilder {
51
51
  * ```
52
52
  *
53
53
  * With this method, it's once again good to remember that Kysely just builds the query
54
- * that's as close to the structure of your builder method calls as possible, and doesn't
55
- * provide the same API for all databses. For example, some databases like older MySQL
56
- * don't support `references` statement in the column definition. Instead foreign key
57
- * constraints need to be defined in at the level of the `create table` query. See
58
- * the next example:
54
+ * and doesn't provide the same API for all databses. For example, some databases like
55
+ * older MySQL don't support `references` statement in the column definition. Instead
56
+ * foreign key constraints need to be defined in at the level of the `create table`
57
+ * query. See the next example:
59
58
  *
60
59
  * @example
61
60
  * ```ts