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
@@ -12,12 +12,12 @@ export interface QueryResult<O> {
12
12
  * This is defined for update and delete queries and contains
13
13
  * the number of rows the query updated/deleted.
14
14
  */
15
- readonly numUpdatedOrDeletedRows?: number;
15
+ readonly numUpdatedOrDeletedRows?: bigint;
16
16
  /**
17
17
  * This is defined for insert queries on dialects that return
18
18
  * the auto incrementing primary key from an insert.
19
19
  */
20
- readonly insertedPrimaryKey?: number;
20
+ readonly insertId?: bigint;
21
21
  /**
22
22
  * The rows returned by the query. This is always defined and is
23
23
  * empty if the query returned no rows.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RuntimeDriver = void 0;
4
+ const performance_now_js_1 = require("../util/performance-now.js");
4
5
  /**
5
6
  * A small wrapper around {@link Driver} that makes sure the driver is
6
7
  * initialized before it is used, only initialized and destroyed
@@ -75,7 +76,7 @@ class RuntimeConnection {
75
76
  this.#log = log;
76
77
  }
77
78
  async executeQuery(compiledQuery) {
78
- const startTime = process.hrtime.bigint();
79
+ const startTime = (0, performance_now_js_1.performanceNow)();
79
80
  try {
80
81
  return await this.#connection.executeQuery(compiledQuery);
81
82
  }
@@ -101,8 +102,6 @@ class RuntimeConnection {
101
102
  }));
102
103
  }
103
104
  #calculateDurationMillis(startTime) {
104
- const endTime = process.hrtime.bigint();
105
- const durationNanos = Number(endTime - startTime);
106
- return durationNanos / 1_000_000;
105
+ return (0, performance_now_js_1.performanceNow)() - startTime;
107
106
  }
108
107
  }
@@ -3,6 +3,9 @@ export * from './query-creator.js';
3
3
  export * from './query-builder/query-builder.js';
4
4
  export * from './query-builder/join-builder.js';
5
5
  export * from './query-builder/expression-builder.js';
6
+ export * from './query-builder/insert-result.js';
7
+ export * from './query-builder/delete-result.js';
8
+ export * from './query-builder/update-result.js';
6
9
  export * from './raw-builder/raw-builder.js';
7
10
  export * from './query-executor/query-executor.js';
8
11
  export * from './query-executor/default-query-executor.js';
@@ -19,6 +22,8 @@ export * from './schema/drop-schema-builder.js';
19
22
  export * from './schema/column-definition-builder.js';
20
23
  export * from './schema/foreign-key-constraint-builder.js';
21
24
  export * from './schema/alter-table-builder.js';
25
+ export * from './schema/create-view-builder.js';
26
+ export * from './schema/drop-view-builder.js';
22
27
  export * from './dynamic/dynamic.js';
23
28
  export * from './driver/driver.js';
24
29
  export * from './driver/database-connection.js';
@@ -35,6 +40,11 @@ export * from './dialect/mysql/mysql-query-compiler.js';
35
40
  export * from './dialect/mysql/mysql-driver.js';
36
41
  export * from './dialect/mysql/mysql-introspector.js';
37
42
  export * from './dialect/mysql/mysql-adapter.js';
43
+ export * from './dialect/sqlite/sqlite-dialect.js';
44
+ export * from './dialect/sqlite/sqlite-query-compiler.js';
45
+ export * from './dialect/sqlite/sqlite-driver.js';
46
+ export * from './dialect/sqlite/sqlite-introspector.js';
47
+ export * from './dialect/sqlite/sqlite-adapter.js';
38
48
  export * from './query-compiler/default-query-compiler.js';
39
49
  export * from './query-compiler/query-compiler.js';
40
50
  export * from './migration/migration.js';
package/dist/cjs/index.js CHANGED
@@ -15,6 +15,9 @@ __exportStar(require("./query-creator.js"), exports);
15
15
  __exportStar(require("./query-builder/query-builder.js"), exports);
16
16
  __exportStar(require("./query-builder/join-builder.js"), exports);
17
17
  __exportStar(require("./query-builder/expression-builder.js"), exports);
18
+ __exportStar(require("./query-builder/insert-result.js"), exports);
19
+ __exportStar(require("./query-builder/delete-result.js"), exports);
20
+ __exportStar(require("./query-builder/update-result.js"), exports);
18
21
  __exportStar(require("./raw-builder/raw-builder.js"), exports);
19
22
  __exportStar(require("./query-executor/query-executor.js"), exports);
20
23
  __exportStar(require("./query-executor/default-query-executor.js"), exports);
@@ -31,6 +34,8 @@ __exportStar(require("./schema/drop-schema-builder.js"), exports);
31
34
  __exportStar(require("./schema/column-definition-builder.js"), exports);
32
35
  __exportStar(require("./schema/foreign-key-constraint-builder.js"), exports);
33
36
  __exportStar(require("./schema/alter-table-builder.js"), exports);
37
+ __exportStar(require("./schema/create-view-builder.js"), exports);
38
+ __exportStar(require("./schema/drop-view-builder.js"), exports);
34
39
  __exportStar(require("./dynamic/dynamic.js"), exports);
35
40
  __exportStar(require("./driver/driver.js"), exports);
36
41
  __exportStar(require("./driver/database-connection.js"), exports);
@@ -47,6 +52,11 @@ __exportStar(require("./dialect/mysql/mysql-query-compiler.js"), exports);
47
52
  __exportStar(require("./dialect/mysql/mysql-driver.js"), exports);
48
53
  __exportStar(require("./dialect/mysql/mysql-introspector.js"), exports);
49
54
  __exportStar(require("./dialect/mysql/mysql-adapter.js"), exports);
55
+ __exportStar(require("./dialect/sqlite/sqlite-dialect.js"), exports);
56
+ __exportStar(require("./dialect/sqlite/sqlite-query-compiler.js"), exports);
57
+ __exportStar(require("./dialect/sqlite/sqlite-driver.js"), exports);
58
+ __exportStar(require("./dialect/sqlite/sqlite-introspector.js"), exports);
59
+ __exportStar(require("./dialect/sqlite/sqlite-adapter.js"), exports);
50
60
  __exportStar(require("./query-compiler/default-query-compiler.js"), exports);
51
61
  __exportStar(require("./query-compiler/query-compiler.js"), exports);
52
62
  __exportStar(require("./migration/migration.js"), exports);
@@ -116,7 +116,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
116
116
  * .execute()
117
117
  * ```
118
118
  *
119
- * The generated SQL (postgresql):
119
+ * The generated SQL (PostgreSQL):
120
120
  *
121
121
  * ```sql
122
122
  * select "person"."id", count("pet"."id") as "pet_count"
@@ -146,17 +146,19 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
146
146
  * const catto = await db.transaction().execute(async (trx) => {
147
147
  * const jennifer = await trx.insertInto('person')
148
148
  * .values({
149
+ * id: db.generated,
149
150
  * first_name: 'Jennifer',
150
- * last_name: 'Aniston',
151
+ * last_name: 'Aniston',
151
152
  * })
152
153
  * .returning('id')
153
- * .executeTakeFirst()
154
+ * .executeTakeFirstOrThrow()
154
155
  *
155
156
  * await someFunction(trx, jennifer)
156
157
  *
157
158
  * return await trx.insertInto('pet')
158
159
  * .values({
159
- * user_id: jennifer!.id,
160
+ * id: db.generated,
161
+ * user_id: jennifer.id,
160
162
  * name: 'Catto',
161
163
  * species: 'cat'
162
164
  * })
@@ -154,7 +154,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
154
154
  * .execute()
155
155
  * ```
156
156
  *
157
- * The generated SQL (postgresql):
157
+ * The generated SQL (PostgreSQL):
158
158
  *
159
159
  * ```sql
160
160
  * select "person"."id", count("pet"."id") as "pet_count"
@@ -186,17 +186,19 @@ class Kysely extends query_creator_js_1.QueryCreator {
186
186
  * const catto = await db.transaction().execute(async (trx) => {
187
187
  * const jennifer = await trx.insertInto('person')
188
188
  * .values({
189
+ * id: db.generated,
189
190
  * first_name: 'Jennifer',
190
- * last_name: 'Aniston',
191
+ * last_name: 'Aniston',
191
192
  * })
192
193
  * .returning('id')
193
- * .executeTakeFirst()
194
+ * .executeTakeFirstOrThrow()
194
195
  *
195
196
  * await someFunction(trx, jennifer)
196
197
  *
197
198
  * return await trx.insertInto('pet')
198
199
  * .values({
199
- * user_id: jennifer!.id,
200
+ * id: db.generated,
201
+ * user_id: jennifer.id,
200
202
  * name: 'Catto',
201
203
  * species: 'cat'
202
204
  * })
@@ -62,5 +62,5 @@ export declare class MigrationModule {
62
62
  }
63
63
  export interface Migration {
64
64
  up(db: Kysely<any>): Promise<void>;
65
- down(db: Kysely<any>): Promise<void>;
65
+ down?(db: Kysely<any>): Promise<void>;
66
66
  }
@@ -61,7 +61,7 @@ async function ensureMigrationTableExists(db) {
61
61
  .execute();
62
62
  }
63
63
  catch (error) {
64
- // At least on postgres, `if not exists` doesn't guarantee the `create table`
64
+ // At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
65
65
  // query doesn't throw if the table already exits. That's why we check if
66
66
  // the table exist here and ignore the error if it does.
67
67
  if (!(await doesTableExists(db, exports.MIGRATION_TABLE))) {
@@ -81,7 +81,7 @@ async function ensureMigrationLockTableExists(db) {
81
81
  .execute();
82
82
  }
83
83
  catch (error) {
84
- // At least on postgres, `if not exists` doesn't guarantee the `create table`
84
+ // At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
85
85
  // query doesn't throw if the table already exits. That's why we check if
86
86
  // the table exist here and ignore the error if it does.
87
87
  if (!(await doesTableExists(db, exports.MIGRATION_LOCK_TABLE))) {
@@ -183,5 +183,5 @@ function ensureMigrationsAreNotCorrupted(executedMigrationNames, oldMigrationNam
183
183
  }
184
184
  }
185
185
  function isMigration(obj) {
186
- return (0, object_utils_js_1.isObject)(obj) && (0, object_utils_js_1.isFunction)(obj.up) && (0, object_utils_js_1.isFunction)(obj.down);
186
+ return (0, object_utils_js_1.isObject)(obj) && (0, object_utils_js_1.isFunction)(obj.up);
187
187
  }
@@ -1,10 +1,11 @@
1
1
  import { CheckConstraintNode } from './check-constraint-node.js';
2
2
  import { ColumnNode } from './column-node.js';
3
3
  import { DataTypeNode } from './data-type-node.js';
4
+ import { DefaultValueNode } from './default-value-node.js';
5
+ import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
4
6
  import { OperationNode } from './operation-node.js';
5
7
  import { RawNode } from './raw-node.js';
6
8
  import { ReferencesNode } from './references-node.js';
7
- import { ValueNode } from './value-node.js';
8
9
  export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind'>;
9
10
  export declare type ColumnDataTypeNode = DataTypeNode | RawNode;
10
11
  export interface ColumnDefinitionNode extends OperationNode {
@@ -12,12 +13,13 @@ export interface ColumnDefinitionNode extends OperationNode {
12
13
  readonly column: ColumnNode;
13
14
  readonly dataType: ColumnDataTypeNode;
14
15
  readonly references?: ReferencesNode;
15
- readonly isPrimaryKey: boolean;
16
- readonly isAutoIncrementing: boolean;
17
- readonly isUnique: boolean;
18
- readonly isNullable: boolean;
19
- readonly defaultTo?: ValueNode | RawNode;
16
+ readonly primaryKey: boolean;
17
+ readonly autoIncrement: boolean;
18
+ readonly unique: boolean;
19
+ readonly nullable: boolean;
20
+ readonly defaultTo?: DefaultValueNode;
20
21
  readonly check?: CheckConstraintNode;
22
+ readonly generatedAlwaysAs?: GeneratedAlwaysAsNode;
21
23
  }
22
24
  /**
23
25
  * @internal
@@ -15,10 +15,10 @@ exports.ColumnDefinitionNode = (0, object_utils_js_1.freeze)({
15
15
  kind: 'ColumnDefinitionNode',
16
16
  column: column_node_js_1.ColumnNode.create(column),
17
17
  dataType,
18
- isPrimaryKey: false,
19
- isAutoIncrementing: false,
20
- isUnique: false,
21
- isNullable: true,
18
+ primaryKey: false,
19
+ autoIncrement: false,
20
+ unique: false,
21
+ nullable: true,
22
22
  });
23
23
  },
24
24
  cloneWith(node, props) {
@@ -1,11 +1,10 @@
1
1
  import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type CreateSchemaNodeModifier = 'IfNotExists';
4
3
  export declare type CreateSchemaNodeParams = Omit<Partial<CreateSchemaNode>, 'kind' | 'schema'>;
5
4
  export interface CreateSchemaNode extends OperationNode {
6
5
  readonly kind: 'CreateSchemaNode';
7
6
  readonly schema: IdentifierNode;
8
- readonly modifier?: CreateSchemaNodeModifier;
7
+ readonly ifNotExists?: boolean;
9
8
  }
10
9
  /**
11
10
  * @internal
@@ -2,12 +2,11 @@ import { OperationNode } from './operation-node.js';
2
2
  import { TableNode } from './table-node.js';
3
3
  import { ConstraintNode } from './constraint-node.js';
4
4
  import { ColumnDefinitionNode } from './column-definition-node.js';
5
- export declare type CreateTableNodeModifier = 'IfNotExists';
6
5
  export interface CreateTableNode extends OperationNode {
7
6
  readonly kind: 'CreateTableNode';
8
7
  readonly table: TableNode;
9
8
  readonly columns: ReadonlyArray<ColumnDefinitionNode>;
10
- readonly modifier?: CreateTableNodeModifier;
9
+ readonly ifNotExists?: boolean;
11
10
  readonly constraints?: ReadonlyArray<ConstraintNode>;
12
11
  }
13
12
  /**
@@ -17,6 +16,6 @@ export declare const CreateTableNode: Readonly<{
17
16
  is(node: OperationNode): node is CreateTableNode;
18
17
  create(table: TableNode): CreateTableNode;
19
18
  cloneWithColumn(createTable: CreateTableNode, column: ColumnDefinitionNode): CreateTableNode;
20
- cloneWithModifier(createTable: CreateTableNode, modifier: CreateTableNodeModifier): CreateTableNode;
19
+ cloneWithIfNotExists(createTable: CreateTableNode, ifNotExists: boolean): CreateTableNode;
21
20
  cloneWithConstraint(createTable: CreateTableNode, constraint: ConstraintNode): CreateTableNode;
22
21
  }>;
@@ -22,10 +22,10 @@ exports.CreateTableNode = (0, object_utils_js_1.freeze)({
22
22
  columns: (0, object_utils_js_1.freeze)([...createTable.columns, column]),
23
23
  });
24
24
  },
25
- cloneWithModifier(createTable, modifier) {
25
+ cloneWithIfNotExists(createTable, ifNotExists) {
26
26
  return (0, object_utils_js_1.freeze)({
27
27
  ...createTable,
28
- modifier,
28
+ ifNotExists,
29
29
  });
30
30
  },
31
31
  cloneWithConstraint(createTable, constraint) {
@@ -0,0 +1,23 @@
1
+ import { ColumnNode } from './column-node.js';
2
+ import { IdentifierNode } from './identifier-node.js';
3
+ import { OperationNode } from './operation-node.js';
4
+ import { RawNode } from './raw-node.js';
5
+ import { SelectQueryNode } from './select-query-node.js';
6
+ export declare type CreateViewNodeParams = Omit<Partial<CreateViewNode>, 'kind' | 'name'>;
7
+ export interface CreateViewNode extends OperationNode {
8
+ readonly kind: 'CreateViewNode';
9
+ readonly name: IdentifierNode;
10
+ readonly materialized?: boolean;
11
+ readonly orReplace?: boolean;
12
+ readonly ifNotExists?: boolean;
13
+ readonly columns?: ReadonlyArray<ColumnNode>;
14
+ readonly as?: SelectQueryNode | RawNode;
15
+ }
16
+ /**
17
+ * @internal
18
+ */
19
+ export declare const CreateViewNode: Readonly<{
20
+ is(node: OperationNode): node is CreateViewNode;
21
+ create(name: string): CreateViewNode;
22
+ cloneWith(createView: CreateViewNode, params: CreateViewNodeParams): CreateViewNode;
23
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateViewNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const identifier_node_js_1 = require("./identifier-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.CreateViewNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'CreateViewNode';
12
+ },
13
+ create(name) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'CreateViewNode',
16
+ name: identifier_node_js_1.IdentifierNode.create(name),
17
+ });
18
+ },
19
+ cloneWith(createView, params) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...createView,
22
+ ...params,
23
+ });
24
+ },
25
+ });
@@ -0,0 +1,14 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { RawNode } from './raw-node.js';
3
+ import { ValueNode } from './value-node.js';
4
+ export interface DefaultValueNode extends OperationNode {
5
+ readonly kind: 'DefaultValueNode';
6
+ readonly defaultValue: ValueNode | RawNode;
7
+ }
8
+ /**
9
+ * @internal
10
+ */
11
+ export declare const DefaultValueNode: Readonly<{
12
+ is(node: OperationNode): node is DefaultValueNode;
13
+ create(defaultValue: ValueNode | RawNode): DefaultValueNode;
14
+ }>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultValueNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ /**
6
+ * @internal
7
+ */
8
+ exports.DefaultValueNode = (0, object_utils_js_1.freeze)({
9
+ is(node) {
10
+ return node.kind === 'DefaultValueNode';
11
+ },
12
+ create(defaultValue) {
13
+ return (0, object_utils_js_1.freeze)({
14
+ kind: 'DefaultValueNode',
15
+ defaultValue,
16
+ });
17
+ },
18
+ });
@@ -2,12 +2,11 @@ import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
3
  import { TableNode } from './table-node.js';
4
4
  export declare type DropIndexNodeProps = Omit<DropIndexNode, 'kind' | 'name'>;
5
- export declare type DropIndexNodeModifier = 'IfExists';
6
5
  export interface DropIndexNode extends OperationNode {
7
6
  readonly kind: 'DropIndexNode';
8
7
  readonly name: IdentifierNode;
9
8
  readonly table?: TableNode;
10
- readonly modifier?: DropIndexNodeModifier;
9
+ readonly ifExists?: boolean;
11
10
  }
12
11
  /**
13
12
  * @internal
@@ -1,11 +1,10 @@
1
1
  import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type DropSchemaNodeModifier = 'IfExists';
4
3
  export declare type DropSchemaNodeParams = Omit<Partial<DropSchemaNode>, 'kind' | 'schema'>;
5
4
  export interface DropSchemaNode extends OperationNode {
6
5
  readonly kind: 'DropSchemaNode';
7
6
  readonly schema: IdentifierNode;
8
- readonly modifier?: DropSchemaNodeModifier;
7
+ readonly ifExists?: boolean;
9
8
  }
10
9
  /**
11
10
  * @internal
@@ -13,5 +12,5 @@ export interface DropSchemaNode extends OperationNode {
13
12
  export declare const DropSchemaNode: Readonly<{
14
13
  is(node: OperationNode): node is DropSchemaNode;
15
14
  create(schema: string, params?: DropSchemaNodeParams | undefined): DropSchemaNode;
16
- cloneWithModifier(createSchema: DropSchemaNode, modifier: DropSchemaNodeModifier): DropSchemaNode;
15
+ cloneWith(dropSchema: DropSchemaNode, params: DropSchemaNodeParams): DropSchemaNode;
17
16
  }>;
@@ -17,10 +17,10 @@ exports.DropSchemaNode = (0, object_utils_js_1.freeze)({
17
17
  ...params,
18
18
  });
19
19
  },
20
- cloneWithModifier(createSchema, modifier) {
20
+ cloneWith(dropSchema, params) {
21
21
  return (0, object_utils_js_1.freeze)({
22
- ...createSchema,
23
- modifier,
22
+ ...dropSchema,
23
+ ...params,
24
24
  });
25
25
  },
26
26
  });
@@ -1,11 +1,10 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { TableNode } from './table-node.js';
3
3
  export declare type DropTablexNodeParams = Omit<Partial<DropTableNode>, 'kind' | 'table'>;
4
- export declare type DropTableNodeModifier = 'IfExists';
5
4
  export interface DropTableNode extends OperationNode {
6
5
  readonly kind: 'DropTableNode';
7
6
  readonly table: TableNode;
8
- readonly modifier?: DropTableNodeModifier;
7
+ readonly ifExists?: boolean;
9
8
  }
10
9
  /**
11
10
  * @internal
@@ -13,5 +12,5 @@ export interface DropTableNode extends OperationNode {
13
12
  export declare const DropTableNode: Readonly<{
14
13
  is(node: OperationNode): node is DropTableNode;
15
14
  create(table: TableNode, params?: DropTablexNodeParams | undefined): DropTableNode;
16
- cloneWithModifier(dropIndex: DropTableNode, modifier: DropTableNodeModifier): DropTableNode;
15
+ cloneWith(dropIndex: DropTableNode, params: DropTablexNodeParams): DropTableNode;
17
16
  }>;
@@ -16,10 +16,10 @@ exports.DropTableNode = (0, object_utils_js_1.freeze)({
16
16
  ...params,
17
17
  });
18
18
  },
19
- cloneWithModifier(dropIndex, modifier) {
19
+ cloneWith(dropIndex, params) {
20
20
  return (0, object_utils_js_1.freeze)({
21
21
  ...dropIndex,
22
- modifier,
22
+ ...params,
23
23
  });
24
24
  },
25
25
  });
@@ -0,0 +1,17 @@
1
+ import { IdentifierNode } from './identifier-node.js';
2
+ import { OperationNode } from './operation-node.js';
3
+ export declare type DropViewNodeParams = Omit<Partial<DropViewNode>, 'kind' | 'name'>;
4
+ export interface DropViewNode extends OperationNode {
5
+ readonly kind: 'DropViewNode';
6
+ readonly name: IdentifierNode;
7
+ readonly ifExists?: boolean;
8
+ readonly materialized?: boolean;
9
+ }
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare const DropViewNode: Readonly<{
14
+ is(node: OperationNode): node is DropViewNode;
15
+ create(name: string): DropViewNode;
16
+ cloneWith(dropView: DropViewNode, params: DropViewNodeParams): DropViewNode;
17
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DropViewNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const identifier_node_js_1 = require("./identifier-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.DropViewNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'DropViewNode';
12
+ },
13
+ create(name) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'DropViewNode',
16
+ name: identifier_node_js_1.IdentifierNode.create(name),
17
+ });
18
+ },
19
+ cloneWith(dropView, params) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...dropView,
22
+ ...params,
23
+ });
24
+ },
25
+ });
@@ -0,0 +1,16 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { RawNode } from './raw-node.js';
3
+ export declare type GeneratedAlwaysAsNodeParams = Omit<GeneratedAlwaysAsNode, 'kind' | 'expression'>;
4
+ export interface GeneratedAlwaysAsNode extends OperationNode {
5
+ readonly kind: 'GeneratedAlwaysAsNode';
6
+ readonly expression: RawNode;
7
+ readonly stored?: boolean;
8
+ }
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare const GeneratedAlwaysAsNode: Readonly<{
13
+ is(node: OperationNode): node is GeneratedAlwaysAsNode;
14
+ create(expression: string): GeneratedAlwaysAsNode;
15
+ cloneWith(node: GeneratedAlwaysAsNode, params: GeneratedAlwaysAsNodeParams): GeneratedAlwaysAsNode;
16
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GeneratedAlwaysAsNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const raw_node_js_1 = require("./raw-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.GeneratedAlwaysAsNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'GeneratedAlwaysAsNode';
12
+ },
13
+ create(expression) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'GeneratedAlwaysAsNode',
16
+ expression: raw_node_js_1.RawNode.createWithSql(expression),
17
+ });
18
+ },
19
+ cloneWith(node, params) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...node,
22
+ ...params,
23
+ });
24
+ },
25
+ });
@@ -1,18 +1,14 @@
1
- import { AndNode } from './and-node.js';
2
- import { FilterNode } from './filter-node.js';
1
+ import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  import { OperationNode } from './operation-node.js';
4
- import { OrNode } from './or-node.js';
5
- import { ParensNode } from './parens-node.js';
6
- export declare type HavingNodeChild = FilterNode | AndNode | OrNode | ParensNode;
7
3
  export interface HavingNode extends OperationNode {
8
4
  readonly kind: 'HavingNode';
9
- readonly having: HavingNodeChild;
5
+ readonly having: FilterExpressionNode;
10
6
  }
11
7
  /**
12
8
  * @internal
13
9
  */
14
10
  export declare const HavingNode: Readonly<{
15
11
  is(node: OperationNode): node is HavingNode;
16
- create(filter: HavingNodeChild): HavingNode;
17
- cloneWithFilter(havingNode: HavingNode, op: 'And' | 'Or', having: HavingNodeChild): HavingNode;
12
+ create(filter: FilterExpressionNode): HavingNode;
13
+ cloneWithFilter(havingNode: HavingNode, op: 'And' | 'Or', filter: FilterExpressionNode): HavingNode;
18
14
  }>;
@@ -17,12 +17,12 @@ exports.HavingNode = (0, object_utils_js_1.freeze)({
17
17
  having: filter,
18
18
  });
19
19
  },
20
- cloneWithFilter(havingNode, op, having) {
20
+ cloneWithFilter(havingNode, op, filter) {
21
21
  return (0, object_utils_js_1.freeze)({
22
22
  ...havingNode,
23
23
  having: op === 'And'
24
- ? and_node_js_1.AndNode.create(havingNode.having, having)
25
- : or_node_js_1.OrNode.create(havingNode.having, having),
24
+ ? and_node_js_1.AndNode.create(havingNode.having, filter)
25
+ : or_node_js_1.OrNode.create(havingNode.having, filter),
26
26
  });
27
27
  },
28
28
  });
@@ -1,18 +1,15 @@
1
1
  import { AliasNode } from './alias-node.js';
2
- import { AndNode } from './and-node.js';
3
- import { FilterNode } from './filter-node.js';
2
+ import { OnNode } from './on-node.js';
3
+ import { FilterExpressionNode } from './operation-node-utils.js';
4
4
  import { OperationNode } from './operation-node.js';
5
- import { OrNode } from './or-node.js';
6
- import { ParensNode } from './parens-node.js';
7
5
  import { TableNode } from './table-node.js';
8
6
  export declare type JoinTableNode = TableNode | AliasNode;
9
7
  export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin';
10
- export declare type JoinNodeOnNode = FilterNode | AndNode | OrNode | ParensNode;
11
8
  export interface JoinNode extends OperationNode {
12
9
  readonly kind: 'JoinNode';
13
10
  readonly joinType: JoinType;
14
11
  readonly table: JoinTableNode;
15
- readonly on?: JoinNodeOnNode;
12
+ readonly on?: OnNode;
16
13
  }
17
14
  /**
18
15
  * @internal
@@ -20,7 +17,7 @@ export interface JoinNode extends OperationNode {
20
17
  export declare const JoinNode: Readonly<{
21
18
  is(node: OperationNode): node is JoinNode;
22
19
  create(joinType: JoinType, table: JoinTableNode): JoinNode;
23
- createWithOn(joinType: JoinType, table: JoinTableNode, on: JoinNodeOnNode): JoinNode;
24
- cloneWithOn(joinNode: JoinNode, on: JoinNodeOnNode): JoinNode;
25
- cloneWithOrOn(joinNode: JoinNode, on: JoinNodeOnNode): JoinNode;
20
+ createWithOn(joinType: JoinType, table: JoinTableNode, on: FilterExpressionNode): JoinNode;
21
+ cloneWithOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
22
+ cloneWithOrOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
26
23
  }>;