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
@@ -21,6 +21,9 @@ const delete_query_node_js_1 = require("../operation-node/delete-query-node.js")
21
21
  const on_duplicate_key_node_js_1 = require("../operation-node/on-duplicate-key-node.js");
22
22
  const group_by_parser_js_1 = require("../parser/group-by-parser.js");
23
23
  const union_parser_js_1 = require("../parser/union-parser.js");
24
+ const insert_result_js_1 = require("./insert-result.js");
25
+ const update_result_js_1 = require("./update-result.js");
26
+ const delete_result_js_1 = require("./delete-result.js");
24
27
  /**
25
28
  * The main query builder class.
26
29
  *
@@ -65,7 +68,7 @@ class QueryBuilder {
65
68
  * .whereRef('person.first_name', '=', 'pet.name')
66
69
  * ```
67
70
  *
68
- * The generated SQL (postgresql):
71
+ * The generated SQL (PostgreSQL):
69
72
  *
70
73
  * ```sql
71
74
  * select * from "person", "pet" where "person"."first_name" = "pet"."name"
@@ -88,7 +91,7 @@ class QueryBuilder {
88
91
  * .execute()
89
92
  * ```
90
93
  *
91
- * The generated SQL (postgresql):
94
+ * The generated SQL (PostgreSQL):
92
95
  *
93
96
  * ```sql
94
97
  * select "person".*, (
@@ -147,7 +150,7 @@ class QueryBuilder {
147
150
  * .execute()
148
151
  * ```
149
152
  *
150
- * The generated SQL (postgresql):
153
+ * The generated SQL (PostgreSQL):
151
154
  *
152
155
  * ```sql
153
156
  * select * from "person"
@@ -173,7 +176,7 @@ class QueryBuilder {
173
176
  * )
174
177
  * ```
175
178
  *
176
- * The generated SQL (postgresql):
179
+ * The generated SQL (PostgreSQL):
177
180
  *
178
181
  * ```sql
179
182
  * select * from "person"
@@ -327,7 +330,7 @@ class QueryBuilder {
327
330
  * .execute()
328
331
  * ```
329
332
  *
330
- * The generated SQL (postgresql):
333
+ * The generated SQL (PostgreSQL):
331
334
  *
332
335
  * ```sql
333
336
  * select distinct "first_name" from "person"
@@ -526,15 +529,15 @@ class QueryBuilder {
526
529
  * values to update. In addition to the column's type, the values can be `raw`
527
530
  * instances or select queries.
528
531
  *
529
- * The return value is the number of affected rows. You can use the
530
- * {@link QueryBuilder.returning | returning} method on supported databases
531
- * to get out the updated rows.
532
+ * The return value of an update query is an instance of {@link UpdateResult}.
533
+ * You can use the {@link QueryBuilder.returning | returning} method on
534
+ * supported databases to get out the updated rows.
532
535
  *
533
536
  * @example
534
537
  * Update a row in `person` table:
535
538
  *
536
539
  * ```ts
537
- * const numAffectedRows = await db
540
+ * const result = await db
538
541
  * .updateTable('person')
539
542
  * .set({
540
543
  * first_name: 'Jennifer',
@@ -542,9 +545,11 @@ class QueryBuilder {
542
545
  * })
543
546
  * .where('id', '=', 1)
544
547
  * .executeTakeFirst()
548
+ *
549
+ * console.log(result.numUpdatedRows)
545
550
  * ```
546
551
  *
547
- * The generated SQL (postgresql):
552
+ * The generated SQL (PostgreSQL):
548
553
  *
549
554
  * ```sql
550
555
  * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3
@@ -569,7 +574,7 @@ class QueryBuilder {
569
574
  * row.id
570
575
  * ```
571
576
  *
572
- * The generated SQL (postgresql):
577
+ * The generated SQL (PostgreSQL):
573
578
  *
574
579
  * ```sql
575
580
  * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
@@ -580,7 +585,7 @@ class QueryBuilder {
580
585
  * select queries:
581
586
  *
582
587
  * ```ts
583
- * const numAffectedRows = await db
588
+ * const result = await db
584
589
  * .updateTable('person')
585
590
  * .set({
586
591
  * first_name: 'Jennifer',
@@ -589,9 +594,11 @@ class QueryBuilder {
589
594
  * })
590
595
  * .where('id', '=', 1)
591
596
  * .executeTakeFirst()
597
+ *
598
+ * console.log(result.numUpdatedRows)
592
599
  * ```
593
600
  *
594
- * The generated SQL (postgresql):
601
+ * The generated SQL (PostgreSQL):
595
602
  *
596
603
  * ```sql
597
604
  * update "person" set
@@ -617,7 +624,7 @@ class QueryBuilder {
617
624
  }
618
625
  /**
619
626
  * Adds a `returning *` to an insert/update/delete query on databases
620
- * that support `returning` such as postgres.
627
+ * that support `returning` such as PostgreSQL.
621
628
  */
622
629
  returningAll() {
623
630
  assertCanHaveReturningClause(this.#props.queryNode);
@@ -645,7 +652,7 @@ class QueryBuilder {
645
652
  * .execute()
646
653
  * ```
647
654
  *
648
- * The generated SQL (postgresql):
655
+ * The generated SQL (PostgreSQL):
649
656
  *
650
657
  * ```sql
651
658
  * select "person"."first_name" as "fn"
@@ -672,7 +679,7 @@ class QueryBuilder {
672
679
  * .execute()
673
680
  * ```
674
681
  *
675
- * The generated SQL (postgresql):
682
+ * The generated SQL (PostgreSQL):
676
683
  *
677
684
  * ```sql
678
685
  * select *
@@ -704,7 +711,7 @@ class QueryBuilder {
704
711
  * someQuery('fn')
705
712
  * ```
706
713
  *
707
- * The generated SQL (postgresql):
714
+ * The generated SQL (PostgreSQL):
708
715
  *
709
716
  * ```sql
710
717
  * select "person"."first_name" as "fn"
@@ -895,32 +902,22 @@ class QueryBuilder {
895
902
  * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
896
903
  */
897
904
  async execute() {
898
- const node = this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);
899
- const compildQuery = this.#props.executor.compileQuery(node, this.#props.queryId);
905
+ const compildQuery = this.compile();
906
+ const query = compildQuery.query;
900
907
  const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
901
- if (insert_query_node_js_1.InsertQueryNode.is(node)) {
902
- if (this.#props.parseContext.adapter.supportsReturning &&
903
- node.returning) {
904
- return result.rows;
905
- }
906
- else if (result.insertedPrimaryKey != null) {
907
- return [result.insertedPrimaryKey];
908
- }
909
- else {
910
- return [];
911
- }
908
+ if (this.#props.parseContext.adapter.supportsReturning &&
909
+ query_node_js_1.QueryNode.isMutating(query) &&
910
+ query.returning) {
911
+ return result.rows;
912
+ }
913
+ else if (insert_query_node_js_1.InsertQueryNode.is(query)) {
914
+ return [new insert_result_js_1.InsertResult(result.insertId)];
915
+ }
916
+ else if (update_query_node_js_1.UpdateQueryNode.is(query)) {
917
+ return [new update_result_js_1.UpdateResult(result.numUpdatedOrDeletedRows)];
912
918
  }
913
- else if (update_query_node_js_1.UpdateQueryNode.is(node) || delete_query_node_js_1.DeleteQueryNode.is(node)) {
914
- if (this.#props.parseContext.adapter.supportsReturning &&
915
- node.returning) {
916
- return result.rows;
917
- }
918
- else if (result.numUpdatedOrDeletedRows != null) {
919
- return [result.numUpdatedOrDeletedRows];
920
- }
921
- else {
922
- return [];
923
- }
919
+ else if (delete_query_node_js_1.DeleteQueryNode.is(query)) {
920
+ return [new delete_result_js_1.DeleteResult(result.numUpdatedOrDeletedRows)];
924
921
  }
925
922
  else {
926
923
  return result.rows;
@@ -0,0 +1,5 @@
1
+ export declare class UpdateResult {
2
+ #private;
3
+ constructor(numUpdatedRows: bigint);
4
+ get numUpdatedRows(): bigint;
5
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateResult = void 0;
4
+ class UpdateResult {
5
+ #numUpdatedRows;
6
+ constructor(numUpdatedRows) {
7
+ this.#numUpdatedRows = numUpdatedRows;
8
+ }
9
+ get numUpdatedRows() {
10
+ return this.#numUpdatedRows;
11
+ }
12
+ }
13
+ exports.UpdateResult = UpdateResult;
@@ -1,4 +1,9 @@
1
+ import { RootOperationNode } from './query-compiler.js';
1
2
  export interface CompiledQuery {
3
+ readonly query: RootOperationNode;
2
4
  readonly sql: string;
3
5
  readonly parameters: ReadonlyArray<unknown>;
4
6
  }
7
+ export declare const CompiledQuery: Readonly<{
8
+ raw(sql: string): CompiledQuery;
9
+ }>;
@@ -1,2 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CompiledQuery = void 0;
4
+ const raw_node_js_1 = require("../operation-node/raw-node.js");
5
+ const object_utils_js_1 = require("../util/object-utils.js");
6
+ exports.CompiledQuery = (0, object_utils_js_1.freeze)({
7
+ raw(sql) {
8
+ return (0, object_utils_js_1.freeze)({
9
+ sql,
10
+ query: raw_node_js_1.RawNode.createWithSql(sql),
11
+ parameters: (0, object_utils_js_1.freeze)([]),
12
+ });
13
+ },
14
+ });
@@ -62,6 +62,11 @@ import { ModifyColumnNode } from '../operation-node/modify-column-node.js';
62
62
  import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
63
63
  import { ColumnNode } from '../operation-node/column-node.js';
64
64
  import { UnionNode } from '../operation-node/union-node.js';
65
+ import { CreateViewNode } from '../operation-node/create-view-node.js';
66
+ import { DropViewNode } from '../operation-node/drop-view-node.js';
67
+ import { GeneratedAlwaysAsNode } from '../operation-node/generated-always-as-node.js';
68
+ import { DefaultValueNode } from '../operation-node/default-value-node.js';
69
+ import { OnNode } from '../operation-node/on-node.js';
65
70
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
66
71
  #private;
67
72
  protected get numParameters(): number;
@@ -91,6 +96,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
91
96
  protected visitPrimitiveValueList(node: PrimitiveValueListNode): void;
92
97
  protected visitParens(node: ParensNode): void;
93
98
  protected visitJoin(node: JoinNode): void;
99
+ protected visitOn(node: OnNode): void;
94
100
  protected visitRaw(node: RawNode): void;
95
101
  protected visitOperator(node: OperatorNode): void;
96
102
  protected visitTable(node: TableNode): void;
@@ -130,6 +136,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
130
136
  protected visitAddConstraint(node: AddConstraintNode): void;
131
137
  protected visitDropConstraint(node: DropConstraintNode): void;
132
138
  protected visitUnion(node: UnionNode): void;
139
+ protected visitCreateView(node: CreateViewNode): void;
140
+ protected visitDropView(node: DropViewNode): void;
141
+ protected visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
142
+ protected visitDefaultValue(node: DefaultValueNode): void;
133
143
  protected append(str: string): void;
134
144
  protected appendValue(parameter: unknown): void;
135
145
  protected getLeftIdentifierWrapper(): string;
@@ -5,6 +5,8 @@ const operation_node_visitor_js_1 = require("../operation-node/operation-node-vi
5
5
  const query_node_js_1 = require("../operation-node/query-node.js");
6
6
  const raw_node_js_1 = require("../operation-node/raw-node.js");
7
7
  const object_utils_js_1 = require("../util/object-utils.js");
8
+ const union_node_js_1 = require("../operation-node/union-node.js");
9
+ const create_view_node_js_1 = require("../operation-node/create-view-node.js");
8
10
  class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisitor {
9
11
  #sql = '';
10
12
  #parameters = [];
@@ -16,6 +18,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
16
18
  this.#parameters = [];
17
19
  this.visitNode(node);
18
20
  return (0, object_utils_js_1.freeze)({
21
+ query: node,
19
22
  sql: this.getSql(),
20
23
  parameters: [...this.#parameters],
21
24
  });
@@ -24,9 +27,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
24
27
  return this.#sql;
25
28
  }
26
29
  visitSelectQuery(node) {
27
- // This is a sub query if this is not the root node.
28
- const isSubQuery = this.nodeStack.length !== 1;
29
- if (isSubQuery) {
30
+ const wrapInParens = this.nodeStack.length !== 1 &&
31
+ !create_view_node_js_1.CreateViewNode.is(this.parentNode) &&
32
+ !union_node_js_1.UnionNode.is(this.parentNode);
33
+ if (wrapInParens) {
30
34
  this.append('(');
31
35
  }
32
36
  if (node.with) {
@@ -38,7 +42,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
38
42
  this.compileDistinctOn(node.distinctOnSelections);
39
43
  this.append(' ');
40
44
  }
41
- if (node.isDistinct) {
45
+ if (node.distinct) {
42
46
  this.append('distinct');
43
47
  this.append(' ');
44
48
  }
@@ -85,7 +89,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
85
89
  this.append(SELECT_MODIFIER_SQL[modifier]);
86
90
  });
87
91
  }
88
- if (isSubQuery) {
92
+ if (wrapInParens) {
89
93
  this.append(')');
90
94
  }
91
95
  }
@@ -265,11 +269,15 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
265
269
  this.append(JOIN_TYPE_SQL[node.joinType]);
266
270
  this.append(' ');
267
271
  this.visitNode(node.table);
268
- this.append(' on ');
269
272
  if (node.on) {
273
+ this.append(' ');
270
274
  this.visitNode(node.on);
271
275
  }
272
276
  }
277
+ visitOn(node) {
278
+ this.append('on ');
279
+ this.visitNode(node.on);
280
+ }
273
281
  visitRaw(node) {
274
282
  node.sqlFragments.forEach((sql, i) => {
275
283
  this.append(sql);
@@ -290,7 +298,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
290
298
  }
291
299
  visitCreateTable(node) {
292
300
  this.append('create table ');
293
- if (node.modifier === 'IfNotExists') {
301
+ if (node.ifNotExists) {
294
302
  this.append('if not exists ');
295
303
  }
296
304
  this.visitNode(node.table);
@@ -302,23 +310,27 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
302
310
  this.visitNode(node.column);
303
311
  this.append(' ');
304
312
  this.visitNode(node.dataType);
313
+ if (node.generatedAlwaysAs) {
314
+ this.append(' ');
315
+ this.visitNode(node.generatedAlwaysAs);
316
+ }
305
317
  if (node.defaultTo) {
306
- this.append(' default ');
318
+ this.append(' ');
307
319
  this.visitNode(node.defaultTo);
308
320
  }
309
- if (!node.isNullable) {
321
+ if (!node.nullable) {
310
322
  this.append(' not null');
311
323
  }
312
- if (node.isAutoIncrementing) {
313
- this.append(' ');
314
- this.append(this.getAutoIncrement());
315
- }
316
- if (node.isUnique) {
324
+ if (node.unique) {
317
325
  this.append(' unique');
318
326
  }
319
- if (node.isPrimaryKey) {
327
+ if (node.primaryKey) {
320
328
  this.append(' primary key');
321
329
  }
330
+ if (node.autoIncrement) {
331
+ this.append(' ');
332
+ this.append(this.getAutoIncrement());
333
+ }
322
334
  if (node.references) {
323
335
  this.append(' ');
324
336
  this.visitNode(node.references);
@@ -348,7 +360,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
348
360
  }
349
361
  visitDropTable(node) {
350
362
  this.append('drop table ');
351
- if (node.modifier === 'IfExists') {
363
+ if (node.ifExists) {
352
364
  this.append('if exists ');
353
365
  }
354
366
  this.visitNode(node.table);
@@ -470,7 +482,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
470
482
  }
471
483
  visitDropIndex(node) {
472
484
  this.append('drop index ');
473
- if (node.modifier === 'IfExists') {
485
+ if (node.ifExists) {
474
486
  this.append('if exists ');
475
487
  }
476
488
  this.visitNode(node.name);
@@ -481,14 +493,14 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
481
493
  }
482
494
  visitCreateSchema(node) {
483
495
  this.append('create schema ');
484
- if (node.modifier === 'IfNotExists') {
496
+ if (node.ifNotExists) {
485
497
  this.append('if not exists ');
486
498
  }
487
499
  this.visitNode(node.schema);
488
500
  }
489
501
  visitDropSchema(node) {
490
502
  this.append('drop schema ');
491
- if (node.modifier === 'IfExists') {
503
+ if (node.ifExists) {
492
504
  this.append('if exists ');
493
505
  }
494
506
  this.visitNode(node.schema);
@@ -647,6 +659,53 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
647
659
  }
648
660
  this.visitNode(node.union);
649
661
  }
662
+ visitCreateView(node) {
663
+ this.append('create ');
664
+ if (node.orReplace) {
665
+ this.append('or replace ');
666
+ }
667
+ if (node.materialized) {
668
+ this.append('materialized ');
669
+ }
670
+ this.append('view ');
671
+ if (node.ifNotExists) {
672
+ this.append('if not exists ');
673
+ }
674
+ this.visitNode(node.name);
675
+ this.append(' ');
676
+ if (node.columns) {
677
+ this.append('(');
678
+ this.compileList(node.columns);
679
+ this.append(') ');
680
+ }
681
+ if (node.as) {
682
+ this.append('as ');
683
+ this.visitNode(node.as);
684
+ }
685
+ }
686
+ visitDropView(node) {
687
+ this.append('drop ');
688
+ if (node.materialized) {
689
+ this.append('materialized ');
690
+ }
691
+ this.append('view ');
692
+ if (node.ifExists) {
693
+ this.append('if exists ');
694
+ }
695
+ this.visitNode(node.name);
696
+ }
697
+ visitGeneratedAlwaysAs(node) {
698
+ this.append('generated always as (');
699
+ this.visitNode(node.expression);
700
+ this.append(')');
701
+ if (node.stored) {
702
+ this.append(' stored');
703
+ }
704
+ }
705
+ visitDefaultValue(node) {
706
+ this.append('default ');
707
+ this.visitNode(node.defaultValue);
708
+ }
650
709
  append(str) {
651
710
  this.#sql += str;
652
711
  }
@@ -688,17 +747,17 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
688
747
  }
689
748
  }
690
749
  exports.DefaultQueryCompiler = DefaultQueryCompiler;
691
- const SELECT_MODIFIER_SQL = {
750
+ const SELECT_MODIFIER_SQL = (0, object_utils_js_1.freeze)({
692
751
  ForKeyShare: 'for key share',
693
752
  ForNoKeyUpdate: 'for no key update',
694
753
  ForUpdate: 'for update',
695
754
  ForShare: 'for share',
696
755
  NoWait: 'nowait',
697
756
  SkipLocked: 'skip locked',
698
- };
699
- const JOIN_TYPE_SQL = {
757
+ });
758
+ const JOIN_TYPE_SQL = (0, object_utils_js_1.freeze)({
700
759
  InnerJoin: 'inner join',
701
760
  LeftJoin: 'left join',
702
761
  RightJoin: 'right join',
703
762
  FullJoin: 'full join',
704
- };
763
+ });
@@ -2,13 +2,15 @@ import { AlterTableNode } from '../operation-node/alter-table-node.js';
2
2
  import { CreateIndexNode } from '../operation-node/create-index-node.js';
3
3
  import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
4
4
  import { CreateTableNode } from '../operation-node/create-table-node.js';
5
+ import { CreateViewNode } from '../operation-node/create-view-node.js';
5
6
  import { DropIndexNode } from '../operation-node/drop-index-node.js';
6
7
  import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
7
8
  import { DropTableNode } from '../operation-node/drop-table-node.js';
9
+ import { DropViewNode } from '../operation-node/drop-view-node.js';
8
10
  import { QueryNode } from '../operation-node/query-node.js';
9
11
  import { RawNode } from '../operation-node/raw-node.js';
10
12
  import { CompiledQuery } from './compiled-query.js';
11
- export declare type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | AlterTableNode | DropTableNode | DropIndexNode | CreateSchemaNode | DropSchemaNode | RawNode;
13
+ export declare type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode;
12
14
  /**
13
15
  * a `QueryCompiler` compiles a query expressed as a tree of `OperationNodes` into SQL.
14
16
  */