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.
- package/README.md +22 -16
- package/dist/cjs/dialect/dialect-adapter.d.ts +3 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/cjs/dialect/mysql/mysql-driver.js +25 -32
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/cjs/dialect/postgres/postgres-driver.js +8 -19
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +18 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +33 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +116 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +31 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +19 -0
- package/dist/cjs/driver/database-connection.d.ts +2 -2
- package/dist/cjs/driver/runtime-driver.js +3 -4
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/kysely.d.ts +6 -4
- package/dist/cjs/kysely.js +6 -4
- package/dist/cjs/migration/migration.d.ts +1 -1
- package/dist/cjs/migration/migration.js +3 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
- package/dist/cjs/operation-node/column-definition-node.js +4 -4
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-table-node.js +2 -2
- package/dist/cjs/operation-node/create-view-node.d.ts +23 -0
- package/dist/cjs/operation-node/create-view-node.js +25 -0
- package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
- package/dist/cjs/operation-node/default-value-node.js +18 -0
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-schema-node.js +3 -3
- package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-table-node.js +2 -2
- package/dist/cjs/operation-node/drop-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/drop-view-node.js +25 -0
- package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
- package/dist/cjs/operation-node/having-node.d.ts +4 -8
- package/dist/cjs/operation-node/having-node.js +3 -3
- package/dist/cjs/operation-node/join-node.d.ts +6 -9
- package/dist/cjs/operation-node/join-node.js +10 -7
- package/dist/cjs/operation-node/on-node.d.ts +14 -0
- package/dist/cjs/operation-node/on-node.js +28 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +55 -11
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +11 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +11 -2
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +3 -3
- package/dist/cjs/operation-node/raw-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
- package/dist/cjs/operation-node/select-query-node.js +1 -1
- package/dist/cjs/operation-node/where-node.d.ts +4 -8
- package/dist/cjs/operation-node/where-node.js +3 -3
- package/dist/cjs/parser/filter-parser.js +1 -1
- package/dist/cjs/parser/returning-parser.d.ts +4 -2
- package/dist/cjs/parser/select-parser.d.ts +2 -2
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +22 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.js +21 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +6 -0
- package/dist/cjs/query-builder/delete-result.d.ts +5 -0
- package/dist/cjs/query-builder/delete-result.js +13 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +2 -2
- package/dist/cjs/query-builder/expression-builder.js +1 -1
- package/dist/cjs/query-builder/function-builder.d.ts +5 -5
- package/dist/cjs/query-builder/function-builder.js +3 -3
- package/dist/cjs/query-builder/insert-result.d.ts +27 -0
- package/dist/cjs/query-builder/insert-result.js +35 -0
- package/dist/cjs/query-builder/query-builder.d.ts +91 -81
- package/dist/cjs/query-builder/query-builder.js +38 -41
- package/dist/cjs/query-builder/update-result.d.ts +5 -0
- package/dist/cjs/query-builder/update-result.js +13 -0
- package/dist/cjs/query-compiler/compiled-query.d.ts +5 -0
- package/dist/cjs/query-compiler/compiled-query.js +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +82 -23
- package/dist/cjs/query-compiler/query-compiler.d.ts +3 -1
- package/dist/cjs/query-creator.d.ts +36 -26
- package/dist/cjs/query-creator.js +25 -17
- package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
- package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
- package/dist/cjs/schema/alter-table-builder.js +28 -4
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
- package/dist/cjs/schema/column-definition-builder.js +23 -6
- package/dist/cjs/schema/create-schema-builder.js +1 -1
- package/dist/cjs/schema/create-table-builder.d.ts +7 -8
- package/dist/cjs/schema/create-table-builder.js +8 -9
- package/dist/cjs/schema/create-view-builder.d.ts +28 -0
- package/dist/cjs/schema/create-view-builder.js +84 -0
- package/dist/cjs/schema/drop-index-builder.js +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +3 -1
- package/dist/cjs/schema/drop-table-builder.js +3 -1
- package/dist/cjs/schema/drop-view-builder.d.ts +20 -0
- package/dist/cjs/schema/drop-view-builder.js +39 -0
- package/dist/cjs/schema/schema.d.ts +30 -3
- package/dist/cjs/schema/schema.js +44 -3
- package/dist/cjs/util/dynamic-import.d.ts +2 -0
- package/dist/cjs/util/dynamic-import.js +32 -0
- package/dist/cjs/util/performance-now.d.ts +1 -0
- package/dist/cjs/util/performance-now.js +13 -0
- package/dist/cjs/util/type-utils.d.ts +4 -15
- package/dist/esm/dialect/dialect-adapter.d.ts +3 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/esm/dialect/mysql/mysql-driver.js +26 -33
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/esm/dialect/postgres/postgres-driver.js +8 -19
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +14 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +29 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +112 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +27 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +15 -0
- package/dist/esm/driver/database-connection.d.ts +2 -2
- package/dist/esm/driver/runtime-driver.js +3 -4
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/kysely.d.ts +6 -4
- package/dist/esm/kysely.js +6 -4
- package/dist/esm/migration/migration.d.ts +1 -1
- package/dist/esm/migration/migration.js +3 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
- package/dist/esm/operation-node/column-definition-node.js +4 -4
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
- package/dist/esm/operation-node/create-table-node.d.ts +2 -3
- package/dist/esm/operation-node/create-table-node.js +2 -2
- package/dist/esm/operation-node/create-view-node.d.ts +23 -0
- package/dist/esm/operation-node/create-view-node.js +22 -0
- package/dist/esm/operation-node/default-value-node.d.ts +14 -0
- package/dist/esm/operation-node/default-value-node.js +15 -0
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-schema-node.js +3 -3
- package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-table-node.js +2 -2
- package/dist/esm/operation-node/drop-view-node.d.ts +17 -0
- package/dist/esm/operation-node/drop-view-node.js +22 -0
- package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/esm/operation-node/generated-always-as-node.js +22 -0
- package/dist/esm/operation-node/having-node.d.ts +4 -8
- package/dist/esm/operation-node/having-node.js +3 -3
- package/dist/esm/operation-node/join-node.d.ts +6 -9
- package/dist/esm/operation-node/join-node.js +10 -7
- package/dist/esm/operation-node/on-node.d.ts +14 -0
- package/dist/esm/operation-node/on-node.js +25 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-transformer.js +55 -11
- package/dist/esm/operation-node/operation-node-visitor.d.ts +11 -0
- package/dist/esm/operation-node/operation-node-visitor.js +11 -2
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +3 -3
- package/dist/esm/operation-node/raw-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -5
- package/dist/esm/operation-node/select-query-node.js +1 -1
- package/dist/esm/operation-node/where-node.d.ts +4 -8
- package/dist/esm/operation-node/where-node.js +3 -3
- package/dist/esm/parser/filter-parser.js +1 -1
- package/dist/esm/parser/returning-parser.d.ts +4 -2
- package/dist/esm/parser/select-parser.d.ts +2 -2
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +18 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +17 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +6 -0
- package/dist/esm/query-builder/delete-result.d.ts +5 -0
- package/dist/esm/query-builder/delete-result.js +9 -0
- package/dist/esm/query-builder/expression-builder.d.ts +2 -2
- package/dist/esm/query-builder/expression-builder.js +1 -1
- package/dist/esm/query-builder/function-builder.d.ts +5 -5
- package/dist/esm/query-builder/function-builder.js +3 -3
- package/dist/esm/query-builder/insert-result.d.ts +27 -0
- package/dist/esm/query-builder/insert-result.js +31 -0
- package/dist/esm/query-builder/query-builder.d.ts +91 -81
- package/dist/esm/query-builder/query-builder.js +38 -41
- package/dist/esm/query-builder/update-result.d.ts +5 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-compiler/compiled-query.d.ts +5 -0
- package/dist/esm/query-compiler/compiled-query.js +11 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/esm/query-compiler/default-query-compiler.js +82 -23
- package/dist/esm/query-compiler/query-compiler.d.ts +3 -1
- package/dist/esm/query-creator.d.ts +36 -26
- package/dist/esm/query-creator.js +25 -17
- package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
- package/dist/esm/schema/alter-table-builder.d.ts +6 -2
- package/dist/esm/schema/alter-table-builder.js +28 -4
- package/dist/esm/schema/column-definition-builder.d.ts +43 -2
- package/dist/esm/schema/column-definition-builder.js +23 -6
- package/dist/esm/schema/create-schema-builder.js +1 -1
- package/dist/esm/schema/create-table-builder.d.ts +7 -8
- package/dist/esm/schema/create-table-builder.js +8 -9
- package/dist/esm/schema/create-view-builder.d.ts +28 -0
- package/dist/esm/schema/create-view-builder.js +80 -0
- package/dist/esm/schema/drop-index-builder.js +1 -1
- package/dist/esm/schema/drop-schema-builder.js +3 -1
- package/dist/esm/schema/drop-table-builder.js +3 -1
- package/dist/esm/schema/drop-view-builder.d.ts +20 -0
- package/dist/esm/schema/drop-view-builder.js +35 -0
- package/dist/esm/schema/schema.d.ts +30 -3
- package/dist/esm/schema/schema.js +44 -3
- package/dist/esm/util/dynamic-import.d.ts +2 -0
- package/dist/esm/util/dynamic-import.js +27 -0
- package/dist/esm/util/performance-now.d.ts +1 -0
- package/dist/esm/util/performance-now.js +9 -0
- package/dist/esm/util/type-utils.d.ts +4 -15
- 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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
530
|
-
* {@link QueryBuilder.returning | returning} method on
|
|
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
|
|
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 (
|
|
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 (
|
|
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
|
|
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 (
|
|
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
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
899
|
-
const
|
|
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 (
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
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 (
|
|
914
|
-
|
|
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,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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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.
|
|
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 (
|
|
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.
|
|
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('
|
|
318
|
+
this.append(' ');
|
|
307
319
|
this.visitNode(node.defaultTo);
|
|
308
320
|
}
|
|
309
|
-
if (!node.
|
|
321
|
+
if (!node.nullable) {
|
|
310
322
|
this.append(' not null');
|
|
311
323
|
}
|
|
312
|
-
if (node.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 |
|
|
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
|
*/
|