@fragno-dev/db 0.2.1 → 0.2.2
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/.turbo/turbo-build.log +34 -30
- package/CHANGELOG.md +32 -0
- package/dist/adapters/generic-sql/query/where-builder.js +1 -1
- package/dist/db-fragment-definition-builder.d.ts +27 -89
- package/dist/db-fragment-definition-builder.d.ts.map +1 -1
- package/dist/db-fragment-definition-builder.js +16 -56
- package/dist/db-fragment-definition-builder.js.map +1 -1
- package/dist/fragments/internal-fragment.d.ts +94 -8
- package/dist/fragments/internal-fragment.d.ts.map +1 -1
- package/dist/fragments/internal-fragment.js +56 -55
- package/dist/fragments/internal-fragment.js.map +1 -1
- package/dist/hooks/hooks.d.ts +5 -3
- package/dist/hooks/hooks.d.ts.map +1 -1
- package/dist/hooks/hooks.js +38 -37
- package/dist/hooks/hooks.js.map +1 -1
- package/dist/mod.d.ts +3 -3
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +4 -4
- package/dist/mod.js.map +1 -1
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts +351 -100
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work/execute-unit-of-work.js +431 -263
- package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -1
- package/dist/query/unit-of-work/unit-of-work.d.ts +17 -8
- package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work/unit-of-work.js +24 -8
- package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
- package/dist/query/value-decoding.js +1 -1
- package/dist/schema/create.d.ts +3 -1
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +2 -1
- package/dist/schema/create.js.map +1 -1
- package/dist/schema/generate-id.d.ts +20 -0
- package/dist/schema/generate-id.d.ts.map +1 -0
- package/dist/schema/generate-id.js +28 -0
- package/dist/schema/generate-id.js.map +1 -0
- package/package.json +1 -1
- package/src/adapters/drizzle/drizzle-adapter-sqlite3.test.ts +41 -25
- package/src/adapters/generic-sql/test/generic-drizzle-adapter-sqlite3.test.ts +39 -25
- package/src/db-fragment-definition-builder.test.ts +58 -42
- package/src/db-fragment-definition-builder.ts +58 -248
- package/src/db-fragment-instantiator.test.ts +64 -88
- package/src/db-fragment-integration.test.ts +292 -142
- package/src/fragments/internal-fragment.test.ts +272 -266
- package/src/fragments/internal-fragment.ts +155 -121
- package/src/hooks/hooks.test.ts +248 -256
- package/src/hooks/hooks.ts +74 -63
- package/src/mod.ts +14 -4
- package/src/query/unit-of-work/execute-unit-of-work.test.ts +1494 -1464
- package/src/query/unit-of-work/execute-unit-of-work.ts +1685 -590
- package/src/query/unit-of-work/tx-builder.test.ts +1041 -0
- package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +20 -20
- package/src/query/unit-of-work/unit-of-work.test.ts +64 -0
- package/src/query/unit-of-work/unit-of-work.ts +26 -13
- package/src/schema/create.ts +2 -0
- package/src/schema/generate-id.test.ts +57 -0
- package/src/schema/generate-id.ts +38 -0
- package/src/shared/config.ts +0 -10
- package/src/shared/connection-pool.ts +0 -24
- package/src/shared/prisma.ts +0 -45
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @fragno-dev/db@0.2.
|
|
2
|
+
> @fragno-dev/db@0.2.2 build /home/runner/work/fragno/fragno/packages/fragno-db
|
|
3
3
|
> tsdown
|
|
4
4
|
|
|
5
5
|
[34mℹ[39m tsdown [2mv0.15.12[22m powered by rolldown [2mv1.0.0-beta.45[22m
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
[34mℹ[39m entry: [34msrc/db-fragment-definition-builder.ts, src/id.ts, src/mod.ts, src/adapters/adapters.ts, src/migration-engine/generation-engine.ts, src/query/cursor.ts, src/query/simple-query-interface.ts, src/schema/create.ts, src/sql-driver/sql-driver.ts, src/adapters/drizzle/drizzle-adapter.ts, src/adapters/drizzle/generate.ts, src/adapters/generic-sql/driver-config.ts, src/adapters/generic-sql/generic-sql-adapter.ts, src/adapters/kysely/kysely-adapter.ts, src/query/unit-of-work/unit-of-work.ts, src/sql-driver/dialects/dialects.ts, src/sql-driver/dialects/durable-object-dialect.ts[39m
|
|
8
8
|
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
9
9
|
[34mℹ[39m Build start
|
|
10
|
-
[34mℹ[39m [2mdist/[22m[1mquery/unit-of-work/unit-of-work.js[22m [
|
|
11
|
-
[34mℹ[39m [2mdist/[22m[1mschema/create.js[22m [2m19.
|
|
10
|
+
[34mℹ[39m [2mdist/[22m[1mquery/unit-of-work/unit-of-work.js[22m [2m33.28 kB[22m [2m│ gzip: 7.47 kB[22m
|
|
11
|
+
[34mℹ[39m [2mdist/[22m[1mschema/create.js[22m [2m19.91 kB[22m [2m│ gzip: 5.21 kB[22m
|
|
12
12
|
[34mℹ[39m [2mdist/[22m[1madapters/drizzle/generate.js[22m [2m14.69 kB[22m [2m│ gzip: 3.69 kB[22m
|
|
13
|
-
[34mℹ[39m [2mdist/[22m[1mdb-fragment-definition-builder.js[22m [2m 9.56 kB[22m [2m│ gzip: 2.45 kB[22m
|
|
14
13
|
[34mℹ[39m [2mdist/[22m[1mmigration-engine/generation-engine.js[22m [2m 8.05 kB[22m [2m│ gzip: 2.27 kB[22m
|
|
14
|
+
[34mℹ[39m [2mdist/[22m[1mdb-fragment-definition-builder.js[22m [2m 7.83 kB[22m [2m│ gzip: 2.27 kB[22m
|
|
15
15
|
[34mℹ[39m [2mdist/[22m[1mquery/cursor.js[22m [2m 4.81 kB[22m [2m│ gzip: 1.70 kB[22m
|
|
16
|
-
[34mℹ[39m [2mdist/[22m[1mmod.js[22m [2m 4.
|
|
16
|
+
[34mℹ[39m [2mdist/[22m[1mmod.js[22m [2m 4.40 kB[22m [2m│ gzip: 1.42 kB[22m
|
|
17
17
|
[34mℹ[39m [2mdist/[22m[1msql-driver/dialects/durable-object-dialect.js[22m [2m 3.51 kB[22m [2m│ gzip: 1.10 kB[22m
|
|
18
18
|
[34mℹ[39m [2mdist/[22m[1madapters/generic-sql/generic-sql-adapter.js[22m [2m 3.33 kB[22m [2m│ gzip: 1.14 kB[22m
|
|
19
19
|
[34mℹ[39m [2mdist/[22m[1madapters/generic-sql/driver-config.js[22m [2m 3.12 kB[22m [2m│ gzip: 0.68 kB[22m
|
|
@@ -24,39 +24,40 @@
|
|
|
24
24
|
[34mℹ[39m [2mdist/[22m[1mid.js[22m [2m 0.07 kB[22m [2m│ gzip: 0.07 kB[22m
|
|
25
25
|
[34mℹ[39m [2mdist/[22m[1mquery/simple-query-interface.js[22m [2m 0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
26
26
|
[34mℹ[39m [2mdist/[22m[1msql-driver/sql-driver.js[22m [2m 0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
27
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work/unit-of-work.js.map [
|
|
28
|
-
[34mℹ[39m [2mdist/[
|
|
27
|
+
[34mℹ[39m [2mdist/[22mquery/unit-of-work/unit-of-work.js.map [2m82.31 kB[22m [2m│ gzip: 17.71 kB[22m
|
|
28
|
+
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.js.map [2m70.12 kB[22m [2m│ gzip: 11.84 kB[22m
|
|
29
|
+
[34mℹ[39m [2mdist/[22mschema/create.js.map [2m48.86 kB[22m [2m│ gzip: 11.79 kB[22m
|
|
29
30
|
[34mℹ[39m [2mdist/[22madapters/drizzle/generate.js.map [2m34.97 kB[22m [2m│ gzip: 8.55 kB[22m
|
|
30
|
-
[34mℹ[39m [2mdist/[22mdb-fragment-definition-builder.js.map [2m34.65 kB[22m [2m│ gzip: 7.54 kB[22m
|
|
31
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.js.map [2m31.97 kB[22m [2m│ gzip: 6.83 kB[22m
|
|
32
31
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/fragment-instantiator.js.map [2m26.88 kB[22m [2m│ gzip: 6.61 kB[22m
|
|
32
|
+
[34mℹ[39m [2mdist/[22mdb-fragment-definition-builder.js.map [2m25.67 kB[22m [2m│ gzip: 5.98 kB[22m
|
|
33
33
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/sql-generator.js.map [2m17.35 kB[22m [2m│ gzip: 4.35 kB[22m
|
|
34
|
+
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.js [2m16.91 kB[22m [2m│ gzip: 3.75 kB[22m
|
|
34
35
|
[34mℹ[39m [2mdist/[22mmigration-engine/generation-engine.js.map [2m16.86 kB[22m [2m│ gzip: 4.69 kB[22m
|
|
35
36
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/fragment-instantiator.js [2m16.69 kB[22m [2m│ gzip: 4.17 kB[22m
|
|
36
37
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/fragment-definition-builder.js.map [2m15.85 kB[22m [2m│ gzip: 3.10 kB[22m
|
|
37
38
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/sql-query-compiler.js.map [2m15.39 kB[22m [2m│ gzip: 4.43 kB[22m
|
|
38
39
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map [2m15.11 kB[22m [2m│ gzip: 3.75 kB[22m
|
|
39
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work/unit-of-work.d.ts.map
|
|
40
|
+
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.d.ts.map [2m14.63 kB[22m [2m│ gzip: 5.55 kB[22m
|
|
41
|
+
[34mℹ[39m [2mdist/[22mquery/unit-of-work/unit-of-work.d.ts.map [2m14.07 kB[22m [2m│ gzip: 5.16 kB[22m
|
|
42
|
+
[34mℹ[39m [2mdist/[22mfragments/internal-fragment.js.map [2m13.95 kB[22m [2m│ gzip: 3.59 kB[22m
|
|
40
43
|
[34mℹ[39m [2mdist/[22madapters/shared/from-unit-of-work-compiler.js.map [2m13.87 kB[22m [2m│ gzip: 3.79 kB[22m
|
|
41
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.js [2m12.41 kB[22m [2m│ gzip: 2.81 kB[22m
|
|
42
44
|
[34mℹ[39m [2mdist/[22mnode_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map [2m12.39 kB[22m [2m│ gzip: 3.32 kB[22m
|
|
43
|
-
[34mℹ[39m [2mdist/[
|
|
44
|
-
[34mℹ[39m [2mdist/[22mschema/create.d.ts.map [2m11.85 kB[22m [2m│ gzip: 4.65 kB[22m
|
|
45
|
+
[34mℹ[39m [2mdist/[22mschema/create.d.ts.map [2m11.86 kB[22m [2m│ gzip: 4.68 kB[22m
|
|
45
46
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/where-builder.js.map [2m11.09 kB[22m [2m│ gzip: 2.88 kB[22m
|
|
46
47
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/fragment-definition-builder.js [2m11.03 kB[22m [2m│ gzip: 2.24 kB[22m
|
|
47
48
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/prepared-migrations.js.map [2m 9.48 kB[22m [2m│ gzip: 2.67 kB[22m
|
|
48
49
|
[34mℹ[39m [2mdist/[22mquery/condition-builder.js.map [2m 9.18 kB[22m [2m│ gzip: 2.42 kB[22m
|
|
49
50
|
[34mℹ[39m [2mdist/[22mquery/cursor.js.map [2m 9.12 kB[22m [2m│ gzip: 2.97 kB[22m
|
|
50
51
|
[34mℹ[39m [2mdist/[22msql-driver/dialects/durable-object-dialect.js.map [2m 9.12 kB[22m [2m│ gzip: 2.91 kB[22m
|
|
52
|
+
[34mℹ[39m [2mdist/[22mmod.js.map [2m 8.71 kB[22m [2m│ gzip: 2.68 kB[22m
|
|
51
53
|
[34mℹ[39m [2mdist/[22madapters/shared/uow-operation-compiler.js.map [2m 8.61 kB[22m [2m│ gzip: 2.63 kB[22m
|
|
52
54
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/dialect/sqlite.js.map [2m 8.46 kB[22m [2m│ gzip: 2.85 kB[22m
|
|
53
|
-
[34mℹ[39m [2mdist/[22mmod.js.map [2m 8.40 kB[22m [2m│ gzip: 2.59 kB[22m
|
|
54
55
|
[34mℹ[39m [2mdist/[22mmigration-engine/auto-from-schema.js.map [2m 8.31 kB[22m [2m│ gzip: 2.18 kB[22m
|
|
56
|
+
[34mℹ[39m [2mdist/[22mhooks/hooks.js.map [2m 7.90 kB[22m [2m│ gzip: 2.62 kB[22m
|
|
55
57
|
[34mℹ[39m [2mdist/[22mquery/value-encoding.js.map [2m 7.88 kB[22m [2m│ gzip: 2.57 kB[22m
|
|
56
58
|
[34mℹ[39m [2mdist/[22mquery/simple-query-interface.d.ts.map [2m 7.83 kB[22m [2m│ gzip: 2.92 kB[22m
|
|
57
59
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/sql-generator.js [2m 7.79 kB[22m [2m│ gzip: 2.15 kB[22m
|
|
58
60
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/sqlite-serializer.js.map [2m 7.41 kB[22m [2m│ gzip: 2.04 kB[22m
|
|
59
|
-
[34mℹ[39m [2mdist/[22mhooks/hooks.js.map [2m 7.34 kB[22m [2m│ gzip: 2.47 kB[22m
|
|
60
61
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/generic-sql-uow-operation-compiler.js [2m 6.96 kB[22m [2m│ gzip: 1.71 kB[22m
|
|
61
62
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/uow-decoder.js.map [2m 6.89 kB[22m [2m│ gzip: 2.43 kB[22m
|
|
62
63
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/driver-config.js.map [2m 6.86 kB[22m [2m│ gzip: 1.40 kB[22m
|
|
@@ -65,11 +66,11 @@
|
|
|
65
66
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/generic-sql-adapter.js.map [2m 6.52 kB[22m [2m│ gzip: 2.21 kB[22m
|
|
66
67
|
[34mℹ[39m [2mdist/[22madapters/shared/from-unit-of-work-compiler.js [2m 6.45 kB[22m [2m│ gzip: 1.82 kB[22m
|
|
67
68
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/mysql-serializer.js.map [2m 6.14 kB[22m [2m│ gzip: 1.56 kB[22m
|
|
68
|
-
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/where-builder.js [2m 5.92 kB[22m [2m│ gzip: 1.
|
|
69
|
+
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/where-builder.js [2m 5.92 kB[22m [2m│ gzip: 1.66 kB[22m
|
|
69
70
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/uow-encoder.js.map [2m 5.91 kB[22m [2m│ gzip: 2.17 kB[22m
|
|
70
71
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/request-output-context.js.map [2m 5.82 kB[22m [2m│ gzip: 1.69 kB[22m
|
|
71
72
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/sql-query-compiler.js [2m 5.76 kB[22m [2m│ gzip: 1.89 kB[22m
|
|
72
|
-
[34mℹ[39m [2mdist/[
|
|
73
|
+
[34mℹ[39m [2mdist/[22mfragments/internal-fragment.js [2m 5.74 kB[22m [2m│ gzip: 1.58 kB[22m
|
|
73
74
|
[34mℹ[39m [2mdist/[22mschema/type-conversion/type-mapping.js.map [2m 5.72 kB[22m [2m│ gzip: 1.90 kB[22m
|
|
74
75
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/postgres-serializer.js.map [2m 5.59 kB[22m [2m│ gzip: 1.49 kB[22m
|
|
75
76
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/request-input-context.js.map [2m 5.39 kB[22m [2m│ gzip: 1.72 kB[22m
|
|
@@ -77,18 +78,17 @@
|
|
|
77
78
|
[34mℹ[39m [2mdist/[22mwith-database.js.map [2m 5.30 kB[22m [2m│ gzip: 1.49 kB[22m
|
|
78
79
|
[34mℹ[39m [2mdist/[22mquery/value-decoding.js.map [2m 5.15 kB[22m [2m│ gzip: 1.88 kB[22m
|
|
79
80
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/result-interpreter.js.map [2m 4.94 kB[22m [2m│ gzip: 1.62 kB[22m
|
|
80
|
-
[34mℹ[39m [2mdist/[22mfragments/internal-fragment.js [2m 4.94 kB[22m [2m│ gzip: 1.46 kB[22m
|
|
81
81
|
[34mℹ[39m [2mdist/[22mquery/unit-of-work/retry-policy.js.map [2m 4.93 kB[22m [2m│ gzip: 1.38 kB[22m
|
|
82
82
|
[34mℹ[39m [2mdist/[22mnode_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js [2m 4.85 kB[22m [2m│ gzip: 1.62 kB[22m
|
|
83
83
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/dialect/postgres.js.map [2m 4.67 kB[22m [2m│ gzip: 1.79 kB[22m
|
|
84
84
|
[34mℹ[39m [2mdist/[22msql-driver/sql-driver-adapter.js.map [2m 4.67 kB[22m [2m│ gzip: 1.61 kB[22m
|
|
85
85
|
[34mℹ[39m [2mdist/[22mquery/value-encoding.js [2m 4.63 kB[22m [2m│ gzip: 1.61 kB[22m
|
|
86
|
+
[34mℹ[39m [2mdist/[22mdb-fragment-definition-builder.d.ts.map [2m 4.61 kB[22m [2m│ gzip: 1.92 kB[22m
|
|
86
87
|
[34mℹ[39m [2mdist/[22mmigration-engine/auto-from-schema.js [2m 4.33 kB[22m [2m│ gzip: 1.21 kB[22m
|
|
87
88
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/dialect/mysql.js.map [2m 4.29 kB[22m [2m│ gzip: 1.70 kB[22m
|
|
88
89
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/uow-decoder.js [2m 3.94 kB[22m [2m│ gzip: 1.46 kB[22m
|
|
89
90
|
[34mℹ[39m [2mdist/[22mmigration-engine/shared.js.map [2m 3.89 kB[22m [2m│ gzip: 1.25 kB[22m
|
|
90
91
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/dialect/sqlite.js [2m 3.77 kB[22m [2m│ gzip: 1.44 kB[22m
|
|
91
|
-
[34mℹ[39m [2mdist/[22mfragments/internal-fragment.d.ts.map [2m 3.67 kB[22m [2m│ gzip: 0.63 kB[22m
|
|
92
92
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/sqlite-serializer.js [2m 3.66 kB[22m [2m│ gzip: 1.08 kB[22m
|
|
93
93
|
[34mℹ[39m [2mdist/[22madapters/shared/uow-operation-compiler.js [2m 3.58 kB[22m [2m│ gzip: 1.27 kB[22m
|
|
94
94
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/request-middleware.js.map [2m 3.58 kB[22m [2m│ gzip: 1.25 kB[22m
|
|
@@ -97,18 +97,18 @@
|
|
|
97
97
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/uow-encoder.js [2m 3.48 kB[22m [2m│ gzip: 1.39 kB[22m
|
|
98
98
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/request-output-context.js [2m 3.40 kB[22m [2m│ gzip: 1.03 kB[22m
|
|
99
99
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/request-input-context.js [2m 3.36 kB[22m [2m│ gzip: 1.11 kB[22m
|
|
100
|
+
[34mℹ[39m [2mdist/[22mhooks/hooks.js [2m 3.32 kB[22m [2m│ gzip: 1.20 kB[22m
|
|
100
101
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/mutable-request-state.js.map [2m 3.32 kB[22m [2m│ gzip: 1.20 kB[22m
|
|
101
102
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/prepared-migrations.js [2m 3.29 kB[22m [2m│ gzip: 0.99 kB[22m
|
|
102
|
-
[34mℹ[39m [2mdist/[22mhooks/hooks.js [2m 3.22 kB[22m [2m│ gzip: 1.16 kB[22m
|
|
103
103
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/internal/response-stream.js.map [2m 3.21 kB[22m [2m│ gzip: 1.25 kB[22m
|
|
104
104
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/result-interpreter.js [2m 3.05 kB[22m [2m│ gzip: 1.02 kB[22m
|
|
105
105
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/fragno-response.js.map [2m 3.04 kB[22m [2m│ gzip: 1.16 kB[22m
|
|
106
106
|
[34mℹ[39m [2mdist/[22mquery/serialize/sql-serializer.js [2m 3.00 kB[22m [2m│ gzip: 1.09 kB[22m
|
|
107
107
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/mysql-serializer.js [2m 2.94 kB[22m [2m│ gzip: 0.83 kB[22m
|
|
108
108
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/cursor-utils.js.map [2m 2.78 kB[22m [2m│ gzip: 1.22 kB[22m
|
|
109
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.d.ts.map [2m 2.75 kB[22m [2m│ gzip: 1.17 kB[22m
|
|
110
109
|
[34mℹ[39m [2mdist/[22madapters/adapters.js.map [2m 2.71 kB[22m [2m│ gzip: 1.03 kB[22m
|
|
111
110
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/generic-sql-uow-executor.js [2m 2.68 kB[22m [2m│ gzip: 0.85 kB[22m
|
|
111
|
+
[34mℹ[39m [2mdist/[22mfragments/internal-fragment.d.ts.map [2m 2.66 kB[22m [2m│ gzip: 0.63 kB[22m
|
|
112
112
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/postgres-serializer.js [2m 2.65 kB[22m [2m│ gzip: 0.78 kB[22m
|
|
113
113
|
[34mℹ[39m [2mdist/[22mquery/value-decoding.js [2m 2.54 kB[22m [2m│ gzip: 1.02 kB[22m
|
|
114
114
|
[34mℹ[39m [2mdist/[22msql-driver/sql-driver-adapter.js [2m 2.44 kB[22m [2m│ gzip: 0.80 kB[22m
|
|
@@ -134,6 +134,7 @@
|
|
|
134
134
|
[34mℹ[39m [2mdist/[22mquery/condition-builder.js [2m 1.89 kB[22m [2m│ gzip: 0.70 kB[22m
|
|
135
135
|
[34mℹ[39m [2mdist/[22mquery/column-defaults.js.map [2m 1.84 kB[22m [2m│ gzip: 0.74 kB[22m
|
|
136
136
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/error.js.map [2m 1.81 kB[22m [2m│ gzip: 0.67 kB[22m
|
|
137
|
+
[34mℹ[39m [2mdist/[22mschema/generate-id.js.map [2m 1.79 kB[22m [2m│ gzip: 0.84 kB[22m
|
|
137
138
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/internal/response-stream.js [2m 1.77 kB[22m [2m│ gzip: 0.73 kB[22m
|
|
138
139
|
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-adapter.js.map [2m 1.75 kB[22m [2m│ gzip: 0.76 kB[22m
|
|
139
140
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/cursor-utils.js [2m 1.67 kB[22m [2m│ gzip: 0.77 kB[22m
|
|
@@ -156,6 +157,7 @@
|
|
|
156
157
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/dialect/sqlite.js.map [2m 1.20 kB[22m [2m│ gzip: 0.55 kB[22m
|
|
157
158
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/dialect/postgres.js.map [2m 1.19 kB[22m [2m│ gzip: 0.55 kB[22m
|
|
158
159
|
[34mℹ[39m [2mdist/[22mwith-database.js [2m 1.15 kB[22m [2m│ gzip: 0.53 kB[22m
|
|
160
|
+
[34mℹ[39m [2mdist/[22mschema/generate-id.js [2m 1.15 kB[22m [2m│ gzip: 0.57 kB[22m
|
|
159
161
|
[34mℹ[39m [2mdist/[22mquery/serialize/create-sql-serializer.js [2m 1.13 kB[22m [2m│ gzip: 0.47 kB[22m
|
|
160
162
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/generic-sql-adapter.d.ts.map [2m 1.12 kB[22m [2m│ gzip: 0.51 kB[22m
|
|
161
163
|
[34mℹ[39m [2mdist/[22mschema/type-conversion/dialect/mysql.js [2m 1.12 kB[22m [2m│ gzip: 0.57 kB[22m
|
|
@@ -206,14 +208,15 @@
|
|
|
206
208
|
[34mℹ[39m [2mdist/[22mmigration-engine/shared.js [2m 0.21 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
207
209
|
[34mℹ[39m [2mdist/[22msql-driver/dialect-adapter/dialect-adapter.d.ts.map [2m 0.20 kB[22m [2m│ gzip: 0.15 kB[22m
|
|
208
210
|
[34mℹ[39m [2mdist/[22msql-driver/query-executor/plugin.d.ts.map [2m 0.20 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
211
|
+
[34mℹ[39m [2mdist/[22mschema/generate-id.d.ts.map [2m 0.19 kB[22m [2m│ gzip: 0.15 kB[22m
|
|
209
212
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/executor.d.ts.map [2m 0.18 kB[22m [2m│ gzip: 0.15 kB[22m
|
|
210
213
|
[34mℹ[39m [2mdist/[22madapters/shared/table-name-mapper.d.ts.map [2m 0.17 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
211
214
|
[34mℹ[39m [2mdist/[22mshared/providers.d.ts.map [2m 0.15 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
212
|
-
[34mℹ[39m [2mdist/[22m[32m[1mquery/unit-of-work/unit-of-work.d.ts[22m[39m [2m27.
|
|
213
|
-
[34mℹ[39m [2mdist/[22m[32m[1mschema/create.d.ts[22m[39m [2m19.
|
|
214
|
-
[34mℹ[39m [2mdist/[22m[32m[1mdb-fragment-definition-builder.d.ts[22m[39m [
|
|
215
|
+
[34mℹ[39m [2mdist/[22m[32m[1mquery/unit-of-work/unit-of-work.d.ts[22m[39m [2m27.64 kB[22m [2m│ gzip: 6.52 kB[22m
|
|
216
|
+
[34mℹ[39m [2mdist/[22m[32m[1mschema/create.d.ts[22m[39m [2m19.52 kB[22m [2m│ gzip: 4.75 kB[22m
|
|
217
|
+
[34mℹ[39m [2mdist/[22m[32m[1mdb-fragment-definition-builder.d.ts[22m[39m [2m 9.85 kB[22m [2m│ gzip: 2.36 kB[22m
|
|
215
218
|
[34mℹ[39m [2mdist/[22m[32m[1mquery/simple-query-interface.d.ts[22m[39m [2m 7.58 kB[22m [2m│ gzip: 1.83 kB[22m
|
|
216
|
-
[34mℹ[39m [2mdist/[22m[32m[1mmod.d.ts[22m[39m [2m 4.
|
|
219
|
+
[34mℹ[39m [2mdist/[22m[32m[1mmod.d.ts[22m[39m [2m 4.66 kB[22m [2m│ gzip: 1.46 kB[22m
|
|
217
220
|
[34mℹ[39m [2mdist/[22m[32m[1mquery/cursor.d.ts[22m[39m [2m 3.60 kB[22m [2m│ gzip: 1.31 kB[22m
|
|
218
221
|
[34mℹ[39m [2mdist/[22m[32m[1madapters/generic-sql/driver-config.d.ts[22m[39m [2m 3.38 kB[22m [2m│ gzip: 0.83 kB[22m
|
|
219
222
|
[34mℹ[39m [2mdist/[22m[32m[1madapters/adapters.d.ts[22m[39m [2m 2.62 kB[22m [2m│ gzip: 0.99 kB[22m
|
|
@@ -226,16 +229,17 @@
|
|
|
226
229
|
[34mℹ[39m [2mdist/[22m[32m[1madapters/kysely/kysely-adapter.d.ts[22m[39m [2m 0.81 kB[22m [2m│ gzip: 0.39 kB[22m
|
|
227
230
|
[34mℹ[39m [2mdist/[22m[32m[1msql-driver/dialects/dialects.d.ts[22m[39m [2m 0.13 kB[22m [2m│ gzip: 0.08 kB[22m
|
|
228
231
|
[34mℹ[39m [2mdist/[22m[32m[1mid.d.ts[22m[39m [2m 0.07 kB[22m [2m│ gzip: 0.07 kB[22m
|
|
229
|
-
[34mℹ[39m [2mdist/[22m[32mquery/unit-of-work/execute-unit-of-work.d.ts[39m [
|
|
230
|
-
[34mℹ[39m [2mdist/[22m[32mfragments/internal-fragment.d.ts[39m [2m
|
|
232
|
+
[34mℹ[39m [2mdist/[22m[32mquery/unit-of-work/execute-unit-of-work.d.ts[39m [2m26.79 kB[22m [2m│ gzip: 4.25 kB[22m
|
|
233
|
+
[34mℹ[39m [2mdist/[22m[32mfragments/internal-fragment.d.ts[39m [2m 6.09 kB[22m [2m│ gzip: 1.36 kB[22m
|
|
231
234
|
[34mℹ[39m [2mdist/[22m[32madapters/generic-sql/migration/prepared-migrations.d.ts[39m [2m 2.90 kB[22m [2m│ gzip: 0.86 kB[22m
|
|
232
235
|
[34mℹ[39m [2mdist/[22m[32mquery/unit-of-work/retry-policy.d.ts[39m [2m 2.73 kB[22m [2m│ gzip: 0.76 kB[22m
|
|
233
236
|
[34mℹ[39m [2mdist/[22m[32mquery/condition-builder.d.ts[39m [2m 2.00 kB[22m [2m│ gzip: 0.68 kB[22m
|
|
234
237
|
[34mℹ[39m [2mdist/[22m[32mwith-database.d.ts[39m [2m 1.95 kB[22m [2m│ gzip: 0.70 kB[22m
|
|
235
|
-
[34mℹ[39m [2mdist/[22m[32mhooks/hooks.d.ts[39m [2m 1.
|
|
238
|
+
[34mℹ[39m [2mdist/[22m[32mhooks/hooks.d.ts[39m [2m 1.53 kB[22m [2m│ gzip: 0.70 kB[22m
|
|
236
239
|
[34mℹ[39m [2mdist/[22m[32msql-driver/query-executor/query-executor.d.ts[39m [2m 1.17 kB[22m [2m│ gzip: 0.49 kB[22m
|
|
237
240
|
[34mℹ[39m [2mdist/[22m[32msql-driver/sql-driver-adapter.d.ts[39m [2m 1.08 kB[22m [2m│ gzip: 0.49 kB[22m
|
|
238
241
|
[34mℹ[39m [2mdist/[22m[32msql-driver/driver/runtime-driver.d.ts[39m [2m 0.88 kB[22m [2m│ gzip: 0.39 kB[22m
|
|
242
|
+
[34mℹ[39m [2mdist/[22m[32mschema/generate-id.d.ts[39m [2m 0.74 kB[22m [2m│ gzip: 0.43 kB[22m
|
|
239
243
|
[34mℹ[39m [2mdist/[22m[32mquery/orm/orm.d.ts[39m [2m 0.63 kB[22m [2m│ gzip: 0.35 kB[22m
|
|
240
244
|
[34mℹ[39m [2mdist/[22m[32msql-driver/query-executor/plugin.d.ts[39m [2m 0.52 kB[22m [2m│ gzip: 0.31 kB[22m
|
|
241
245
|
[34mℹ[39m [2mdist/[22m[32msql-driver/connection/connection-provider.d.ts[39m [2m 0.47 kB[22m [2m│ gzip: 0.27 kB[22m
|
|
@@ -245,5 +249,5 @@
|
|
|
245
249
|
[34mℹ[39m [2mdist/[22m[32mshared/providers.d.ts[39m [2m 0.26 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
246
250
|
[34mℹ[39m [2mdist/[22m[32mutil/types.d.ts[39m [2m 0.26 kB[22m [2m│ gzip: 0.21 kB[22m
|
|
247
251
|
[34mℹ[39m [2mdist/[22m[32msql-driver/dialect-adapter/dialect-adapter.d.ts[39m [2m 0.21 kB[22m [2m│ gzip: 0.16 kB[22m
|
|
248
|
-
[34mℹ[39m
|
|
249
|
-
[32m✔[39m Build complete in [
|
|
252
|
+
[34mℹ[39m 242 files, total: 1214.83 kB
|
|
253
|
+
[32m✔[39m Build complete in [32m14516ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# @fragno-dev/db
|
|
2
2
|
|
|
3
|
+
## 0.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- aca5990: breaking: remove executeUnitOfWork helper in favor of executeTx
|
|
8
|
+
- f150db9: feat: add `generateId(schema, tableName)` utility for pre-generating table IDs without
|
|
9
|
+
creating records. Also available as `TypedUnitOfWork.generateId(tableName)` convenience method.
|
|
10
|
+
- 0b373fc: refactor: Rename `nonce` to `idempotencyKey` in public APIs
|
|
11
|
+
|
|
12
|
+
Rename the `nonce` property to `idempotencyKey` in `HookContext` and `UnitOfWork` interfaces for
|
|
13
|
+
better clarity and consistency. The database column name remains `nonce` for backward
|
|
14
|
+
compatibility.
|
|
15
|
+
|
|
16
|
+
**Breaking change**: Users accessing `this.nonce` in hook functions or `uow.nonce` in unit of work
|
|
17
|
+
operations must update to `this.idempotencyKey` and `uow.idempotencyKey` respectively.
|
|
18
|
+
|
|
19
|
+
- fe27e33: feat: add new builder pattern for combining UOWs
|
|
20
|
+
- 9753f15: feat: Add unified transaction API with createServiceTx and executeTx
|
|
21
|
+
|
|
22
|
+
Introduce a new unified transaction API that consolidates multiple transaction execution patterns
|
|
23
|
+
into a single `executeTx` function with `TxResult` pattern. This provides better type safety,
|
|
24
|
+
clearer composition patterns, and support for nested dependencies.
|
|
25
|
+
|
|
26
|
+
New APIs:
|
|
27
|
+
- `createServiceTx`: Create service-level transactions with dependency support
|
|
28
|
+
- `executeTx`: Handler-level transaction execution with unified callback pattern
|
|
29
|
+
- `TxResult` type: Branded type for transaction results with dependency tracking
|
|
30
|
+
- `handlerTx` method: Added to fragment definitions for convenient access
|
|
31
|
+
|
|
32
|
+
The old APIs (`executeTxCallbacks`, `executeTxWithDeps`, `executeTxArray`) are deprecated but
|
|
33
|
+
remain available for backward compatibility.
|
|
34
|
+
|
|
3
35
|
## 0.2.1
|
|
4
36
|
|
|
5
37
|
### Patch Changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Column, FragnoId, FragnoReference } from "../../../schema/create.js";
|
|
2
1
|
import { createSQLSerializer } from "../../../query/serialize/create-sql-serializer.js";
|
|
2
|
+
import { Column, FragnoId, FragnoReference } from "../../../schema/create.js";
|
|
3
3
|
import { ReferenceSubquery, resolveFragnoIdValue } from "../../../query/value-encoding.js";
|
|
4
4
|
import { sql } from "kysely";
|
|
5
5
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnySchema } from "./schema/create.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ExecuteTxOptions, HandlerTxBuilder, ServiceTxBuilder } from "./query/unit-of-work/execute-unit-of-work.js";
|
|
3
3
|
import { HookContext, HookFn, HooksMap } from "./hooks/hooks.js";
|
|
4
|
-
import { IUnitOfWork
|
|
4
|
+
import { IUnitOfWork } from "./query/unit-of-work/unit-of-work.js";
|
|
5
5
|
import { SimpleQueryInterface } from "./query/simple-query-interface.js";
|
|
6
6
|
import { DatabaseAdapter } from "./adapters/adapters.js";
|
|
7
7
|
import { AnyFragnoInstantiatedFragment, FragmentDefinition, FragmentDefinitionBuilder, FragnoPublicConfig, RequestThisContext, ServiceConstructorFn } from "@fragno-dev/core";
|
|
@@ -42,108 +42,46 @@ type ImplicitDatabaseDependencies<TSchema extends AnySchema> = {
|
|
|
42
42
|
*/
|
|
43
43
|
type DatabaseServiceContext<THooks extends HooksMap> = RequestThisContext & {
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*/
|
|
49
|
-
uow<TSchema extends AnySchema>(schema: TSchema): TypedUnitOfWork<TSchema, [], unknown, THooks>;
|
|
50
|
-
/**
|
|
51
|
-
* Execute a transaction with two-phase callbacks (retrieve + mutate).
|
|
52
|
-
*
|
|
53
|
-
* @param schema - Schema to use for the transaction
|
|
54
|
-
* @param callbacks - Object containing retrieve and mutate callbacks
|
|
55
|
-
* @returns Promise resolving to the mutation result with promises awaited 1 level deep
|
|
45
|
+
* Create a service-level transaction builder using the fluent API.
|
|
46
|
+
* Returns a builder that can be chained with withServiceCalls, retrieve,
|
|
47
|
+
* transformRetrieve, mutate, transform, and build.
|
|
56
48
|
*
|
|
57
49
|
* @example
|
|
58
50
|
* ```ts
|
|
59
|
-
* return this.
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* })
|
|
51
|
+
* return this.serviceTx(schema)
|
|
52
|
+
* .withServiceCalls(() => [otherService.getData()])
|
|
53
|
+
* .retrieve((uow) => uow.find("users", ...))
|
|
54
|
+
* .transformRetrieve(([users]) => users[0])
|
|
55
|
+
* .mutate(({ uow, retrieveResult, serviceIntermediateResult }) =>
|
|
56
|
+
* uow.create("records", { ... })
|
|
57
|
+
* )
|
|
58
|
+
* .transform(({ mutateResult, serviceResult }) => ({ id: mutateResult }))
|
|
59
|
+
* .build();
|
|
67
60
|
* ```
|
|
68
61
|
*/
|
|
69
|
-
|
|
62
|
+
serviceTx<TSchema extends AnySchema>(schema: TSchema): ServiceTxBuilder<TSchema, readonly [], [], [], unknown, unknown, false, false, false, false, THooks>;
|
|
70
63
|
};
|
|
71
64
|
/**
|
|
72
65
|
* Handler context for database fragments - provides UOW execution with automatic retry support.
|
|
73
66
|
*/
|
|
74
67
|
type DatabaseHandlerContext<THooks extends HooksMap = {}> = RequestThisContext & {
|
|
75
68
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* callback is re-executed on optimistic concurrency conflicts, ensuring retries work properly.
|
|
80
|
-
* Automatically provides the UOW factory from context.
|
|
81
|
-
* Promises in the returned object are awaited 1 level deep.
|
|
82
|
-
*
|
|
83
|
-
* @param callback - Async function that receives a context with forSchema, executeRetrieve, executeMutate, nonce, and currentAttempt
|
|
84
|
-
* @param options - Optional configuration for retry policy and abort signal
|
|
85
|
-
* @returns Promise resolving to the callback's return value with promises awaited 1 level deep
|
|
86
|
-
* @throws Error if retries are exhausted or callback throws an error
|
|
69
|
+
* Create a handler-level transaction builder using the fluent API.
|
|
70
|
+
* Returns a builder that can be chained with withServiceCalls, retrieve,
|
|
71
|
+
* transformRetrieve, mutate, transform, and execute.
|
|
87
72
|
*
|
|
88
73
|
* @example
|
|
89
74
|
* ```ts
|
|
90
|
-
* const result = await this.
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* const profileId = uow.create("profiles", { userId });
|
|
98
|
-
*
|
|
99
|
-
* // Execute mutation phase
|
|
100
|
-
* await executeMutate();
|
|
101
|
-
*
|
|
102
|
-
* return { userId, profileId };
|
|
103
|
-
* });
|
|
75
|
+
* const result = await this.handlerTx()
|
|
76
|
+
* .withServiceCalls(() => [userService.getUser(id)])
|
|
77
|
+
* .mutate(({ forSchema, idempotencyKey, currentAttempt, serviceIntermediateResult }) => {
|
|
78
|
+
* return forSchema(ordersSchema).create("orders", { ... });
|
|
79
|
+
* })
|
|
80
|
+
* .transform(({ mutateResult, serviceResult }) => ({ ... }))
|
|
81
|
+
* .execute();
|
|
104
82
|
* ```
|
|
105
83
|
*/
|
|
106
|
-
|
|
107
|
-
forSchema: <TSchema extends AnySchema, H extends HooksMap = THooks>(schema: TSchema, hooks?: H) => TypedUnitOfWork<TSchema, [], unknown, H>;
|
|
108
|
-
executeRetrieve: () => Promise<void>;
|
|
109
|
-
executeMutate: () => Promise<void>;
|
|
110
|
-
nonce: string;
|
|
111
|
-
currentAttempt: number;
|
|
112
|
-
}) => Promise<TResult> | TResult, options?: Omit<ExecuteRestrictedUnitOfWorkOptions, "createUnitOfWork">): Promise<AwaitedPromisesInObject<TResult>>;
|
|
113
|
-
/**
|
|
114
|
-
* Execute a transaction with automatic retry support.
|
|
115
|
-
* Provides two overloads: array syntax (common case) and callback syntax (advanced).
|
|
116
|
-
*
|
|
117
|
-
* Array syntax - pass a factory function that returns service calls:
|
|
118
|
-
* ```ts
|
|
119
|
-
* const [transfer, notify] = await this.tx(
|
|
120
|
-
* () => [
|
|
121
|
-
* services.transfer({ from, to, amount }),
|
|
122
|
-
* services.notify({ userId, message })
|
|
123
|
-
* ]
|
|
124
|
-
* );
|
|
125
|
-
* ```
|
|
126
|
-
*
|
|
127
|
-
* Callback syntax - for handlers that need direct UOW access:
|
|
128
|
-
* ```ts
|
|
129
|
-
* const result = await this.tx({
|
|
130
|
-
* retrieve: ({ forSchema }) => {
|
|
131
|
-
* const uow = forSchema(schema);
|
|
132
|
-
* uow.find("users", ...);
|
|
133
|
-
* return services.transfer({ ... });
|
|
134
|
-
* },
|
|
135
|
-
* mutate: ({ forSchema }, transferPromise) => {
|
|
136
|
-
* const uow = forSchema(schema);
|
|
137
|
-
* uow.create("auditLog", { ... });
|
|
138
|
-
* return transferPromise;
|
|
139
|
-
* }
|
|
140
|
-
* });
|
|
141
|
-
* ```
|
|
142
|
-
*
|
|
143
|
-
* Note: Handler callbacks are synchronous only to prevent accidentally awaiting services in wrong place.
|
|
144
|
-
*/
|
|
145
|
-
tx<T extends readonly unknown[]>(servicesFactory: () => readonly [...{ [K in keyof T]: Promise<T[K]> }], options?: Omit<ExecuteRestrictedUnitOfWorkOptions, "createUnitOfWork">): Promise<{ [K in keyof T]: T[K] }>;
|
|
146
|
-
tx<TRetrieveResult, TMutationResult>(callbacks: HandlerTxCallbacks<TRetrieveResult, TMutationResult, THooks>, options?: Omit<ExecuteRestrictedUnitOfWorkOptions, "createUnitOfWork">): Promise<AwaitedPromisesInObject<TMutationResult>>;
|
|
84
|
+
handlerTx(options?: Omit<ExecuteTxOptions, "createUnitOfWork">): HandlerTxBuilder<readonly [], [], [], unknown, unknown, false, false, false, false, THooks>;
|
|
147
85
|
};
|
|
148
86
|
/**
|
|
149
87
|
* Database fragment context provided to user callbacks.
|
|
@@ -207,7 +145,7 @@ declare class DatabaseFragmentDefinitionBuilder<TSchema extends AnySchema, TConf
|
|
|
207
145
|
* ```ts
|
|
208
146
|
* .provideHooks(({ defineHook, config }) => ({
|
|
209
147
|
* onSubscribe: defineHook(async function (payload: { email: string }) {
|
|
210
|
-
* // 'this' context available (HookServiceContext with
|
|
148
|
+
* // 'this' context available (HookServiceContext with idempotencyKey)
|
|
211
149
|
* await config.onSubscribe?.(payload.email);
|
|
212
150
|
* }),
|
|
213
151
|
* }))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-fragment-definition-builder.d.ts","names":[],"sources":["../src/db-fragment-definition-builder.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"db-fragment-definition-builder.d.ts","names":[],"sources":["../src/db-fragment-definition-builder.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import "./query/unit-of-work/unit-of-work.js";
|
|
2
|
-
import { executeRestrictedUnitOfWork, executeServiceTx, executeTxArray, executeTxCallbacks } from "./query/unit-of-work/execute-unit-of-work.js";
|
|
1
|
+
import { createHandlerTxBuilder, createServiceTxBuilder } from "./query/unit-of-work/execute-unit-of-work.js";
|
|
3
2
|
import { prepareHookMutations, processHooks } from "./hooks/hooks.js";
|
|
4
3
|
|
|
5
4
|
//#region src/db-fragment-definition-builder.ts
|
|
@@ -86,7 +85,7 @@ var DatabaseFragmentDefinitionBuilder = class DatabaseFragmentDefinitionBuilder
|
|
|
86
85
|
* ```ts
|
|
87
86
|
* .provideHooks(({ defineHook, config }) => ({
|
|
88
87
|
* onSubscribe: defineHook(async function (payload: { email: string }) {
|
|
89
|
-
* // 'this' context available (HookServiceContext with
|
|
88
|
+
* // 'this' context available (HookServiceContext with idempotencyKey)
|
|
90
89
|
* await config.onSubscribe?.(payload.email);
|
|
91
90
|
* }),
|
|
92
91
|
* }))
|
|
@@ -169,76 +168,37 @@ var DatabaseFragmentDefinitionBuilder = class DatabaseFragmentDefinitionBuilder
|
|
|
169
168
|
options
|
|
170
169
|
})
|
|
171
170
|
} : void 0;
|
|
172
|
-
function
|
|
173
|
-
const uow
|
|
174
|
-
if (!uow
|
|
175
|
-
return
|
|
171
|
+
function serviceTx(schema) {
|
|
172
|
+
const uow = storage.getStore()?.uow;
|
|
173
|
+
if (!uow) throw new Error("No UnitOfWork in context. Service must be called within a route handler OR using `withUnitOfWork`.");
|
|
174
|
+
return createServiceTxBuilder(schema, uow, hooksConfig?.hooks);
|
|
176
175
|
}
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
if (!uow$1) throw new Error("No UnitOfWork in context. Service must be called within a route handler OR using `withUnitOfWork`.");
|
|
180
|
-
return executeServiceTx(schema, callbacks, uow$1);
|
|
181
|
-
};
|
|
182
|
-
const serviceContext = {
|
|
183
|
-
uow: forSchema,
|
|
184
|
-
tx: serviceTx
|
|
185
|
-
};
|
|
186
|
-
async function uow(callback, execOptions) {
|
|
176
|
+
const serviceContext = { serviceTx };
|
|
177
|
+
function handlerTx(execOptions) {
|
|
187
178
|
const currentStorage = storage.getStore();
|
|
188
179
|
if (!currentStorage) throw new Error("No storage in context. Handler must be called within a request context.");
|
|
189
|
-
const wrappedCallback = async (context) => {
|
|
190
|
-
return callback(context);
|
|
191
|
-
};
|
|
192
180
|
const userOnBeforeMutate = execOptions?.onBeforeMutate;
|
|
193
|
-
const
|
|
194
|
-
return
|
|
181
|
+
const userOnAfterMutate = execOptions?.onAfterMutate;
|
|
182
|
+
return createHandlerTxBuilder({
|
|
195
183
|
...execOptions,
|
|
196
184
|
createUnitOfWork: () => {
|
|
197
185
|
currentStorage.uow.reset();
|
|
198
186
|
if (hooksConfig) currentStorage.uow.registerSchema(hooksConfig.internalFragment.$internal.deps.schema, hooksConfig.internalFragment.$internal.deps.namespace);
|
|
199
187
|
return currentStorage.uow;
|
|
200
188
|
},
|
|
201
|
-
onBeforeMutate: (uow
|
|
202
|
-
if (hooksConfig) prepareHookMutations(uow
|
|
203
|
-
if (userOnBeforeMutate) userOnBeforeMutate(uow
|
|
189
|
+
onBeforeMutate: (uow) => {
|
|
190
|
+
if (hooksConfig) prepareHookMutations(uow, hooksConfig);
|
|
191
|
+
if (userOnBeforeMutate) userOnBeforeMutate(uow);
|
|
204
192
|
},
|
|
205
|
-
|
|
193
|
+
onAfterMutate: async (uow) => {
|
|
206
194
|
if (hooksConfig) await processHooks(hooksConfig);
|
|
207
|
-
if (
|
|
195
|
+
if (userOnAfterMutate) await userOnAfterMutate(uow);
|
|
208
196
|
}
|
|
209
197
|
});
|
|
210
198
|
}
|
|
211
|
-
async function handlerTx(factoryOrCallbacks, execOptions) {
|
|
212
|
-
const currentStorage = storage.getStore();
|
|
213
|
-
if (!currentStorage) throw new Error("No storage in context. Handler must be called within a request context.");
|
|
214
|
-
const userOnBeforeMutate = execOptions?.onBeforeMutate;
|
|
215
|
-
const userOnSuccess = execOptions?.onSuccess;
|
|
216
|
-
const createUow = () => {
|
|
217
|
-
currentStorage.uow.reset();
|
|
218
|
-
if (hooksConfig) currentStorage.uow.registerSchema(hooksConfig.internalFragment.$internal.deps.schema, hooksConfig.internalFragment.$internal.deps.namespace);
|
|
219
|
-
return currentStorage.uow;
|
|
220
|
-
};
|
|
221
|
-
const options$1 = {
|
|
222
|
-
...execOptions,
|
|
223
|
-
createUnitOfWork: createUow,
|
|
224
|
-
onBeforeMutate: (uow$1) => {
|
|
225
|
-
if (hooksConfig) prepareHookMutations(uow$1, hooksConfig);
|
|
226
|
-
if (userOnBeforeMutate) userOnBeforeMutate(uow$1);
|
|
227
|
-
},
|
|
228
|
-
onSuccess: async (uow$1) => {
|
|
229
|
-
if (hooksConfig) await processHooks(hooksConfig);
|
|
230
|
-
if (userOnSuccess) await userOnSuccess(uow$1);
|
|
231
|
-
}
|
|
232
|
-
};
|
|
233
|
-
if (typeof factoryOrCallbacks === "function") return executeTxArray(factoryOrCallbacks, options$1);
|
|
234
|
-
else return executeTxCallbacks(factoryOrCallbacks, options$1);
|
|
235
|
-
}
|
|
236
199
|
return {
|
|
237
200
|
serviceContext,
|
|
238
|
-
handlerContext: {
|
|
239
|
-
uow,
|
|
240
|
-
tx: handlerTx
|
|
241
|
-
}
|
|
201
|
+
handlerContext: { handlerTx }
|
|
242
202
|
};
|
|
243
203
|
}).build(),
|
|
244
204
|
dependencies
|