@fragno-dev/db 0.2.0 → 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 +49 -0
- package/dist/adapters/generic-sql/query/where-builder.js +1 -1
- package/dist/db-fragment-definition-builder.d.ts +31 -39
- package/dist/db-fragment-definition-builder.d.ts.map +1 -1
- package/dist/db-fragment-definition-builder.js +20 -16
- 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 +367 -80
- 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 +448 -148
- 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 +35 -11
- package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work/unit-of-work.js +49 -19
- 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 +2 -3
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +2 -5
- 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/dist/sql-driver/dialects/durable-object-dialect.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +1 -0
- 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 +78 -88
- 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 -122
- package/src/hooks/hooks.test.ts +268 -264
- 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 +1582 -998
- package/src/query/unit-of-work/execute-unit-of-work.ts +1746 -343
- package/src/query/unit-of-work/tx-builder.test.ts +1041 -0
- package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +269 -21
- package/src/query/unit-of-work/unit-of-work.test.ts +64 -0
- package/src/query/unit-of-work/unit-of-work.ts +65 -30
- package/src/schema/create.ts +2 -5
- 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 [
|
|
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
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.
|
|
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
31
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/fragment-instantiator.js.map [2m26.88 kB[22m [2m│ gzip: 6.61 kB[22m
|
|
31
|
-
[34mℹ[39m [2mdist/[22mdb-fragment-definition-builder.js.map [
|
|
32
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.js.map [2m19.76 kB[22m [2m│ gzip: 5.32 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
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
|
|
42
|
-
[34mℹ[39m [2mdist/[
|
|
43
|
-
[34mℹ[39m [2mdist/[22mschema/create.d.ts.map [2m11.90 kB[22m [2m│ gzip: 4.68 kB[22m
|
|
45
|
+
[34mℹ[39m [2mdist/[22mschema/create.d.ts.map [2m11.86 kB[22m [2m│ gzip: 4.68 kB[22m
|
|
44
46
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/query/where-builder.js.map [2m11.09 kB[22m [2m│ gzip: 2.88 kB[22m
|
|
45
47
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/fragment-definition-builder.js [2m11.03 kB[22m [2m│ gzip: 2.24 kB[22m
|
|
46
48
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/prepared-migrations.js.map [2m 9.48 kB[22m [2m│ gzip: 2.67 kB[22m
|
|
47
49
|
[34mℹ[39m [2mdist/[22mquery/condition-builder.js.map [2m 9.18 kB[22m [2m│ gzip: 2.42 kB[22m
|
|
48
50
|
[34mℹ[39m [2mdist/[22mquery/cursor.js.map [2m 9.12 kB[22m [2m│ gzip: 2.97 kB[22m
|
|
49
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
|
|
50
53
|
[34mℹ[39m [2mdist/[22madapters/shared/uow-operation-compiler.js.map [2m 8.61 kB[22m [2m│ gzip: 2.63 kB[22m
|
|
51
54
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/dialect/sqlite.js.map [2m 8.46 kB[22m [2m│ gzip: 2.85 kB[22m
|
|
52
|
-
[34mℹ[39m [2mdist/[22mmod.js.map [2m 8.40 kB[22m [2m│ gzip: 2.59 kB[22m
|
|
53
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
|
|
54
57
|
[34mℹ[39m [2mdist/[22mquery/value-encoding.js.map [2m 7.88 kB[22m [2m│ gzip: 2.57 kB[22m
|
|
55
58
|
[34mℹ[39m [2mdist/[22mquery/simple-query-interface.d.ts.map [2m 7.83 kB[22m [2m│ gzip: 2.92 kB[22m
|
|
56
59
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/sql-generator.js [2m 7.79 kB[22m [2m│ gzip: 2.15 kB[22m
|
|
57
60
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/sqlite-serializer.js.map [2m 7.41 kB[22m [2m│ gzip: 2.04 kB[22m
|
|
58
|
-
[34mℹ[39m [2mdist/[22mhooks/hooks.js.map [2m 7.34 kB[22m [2m│ gzip: 2.47 kB[22m
|
|
59
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.js [2m 7.14 kB[22m [2m│ gzip: 2.21 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,10 +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
|
|
73
|
+
[34mℹ[39m [2mdist/[22mfragments/internal-fragment.js [2m 5.74 kB[22m [2m│ gzip: 1.58 kB[22m
|
|
72
74
|
[34mℹ[39m [2mdist/[22mschema/type-conversion/type-mapping.js.map [2m 5.72 kB[22m [2m│ gzip: 1.90 kB[22m
|
|
73
75
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/postgres-serializer.js.map [2m 5.59 kB[22m [2m│ gzip: 1.49 kB[22m
|
|
74
76
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/request-input-context.js.map [2m 5.39 kB[22m [2m│ gzip: 1.72 kB[22m
|
|
@@ -76,19 +78,17 @@
|
|
|
76
78
|
[34mℹ[39m [2mdist/[22mwith-database.js.map [2m 5.30 kB[22m [2m│ gzip: 1.49 kB[22m
|
|
77
79
|
[34mℹ[39m [2mdist/[22mquery/value-decoding.js.map [2m 5.15 kB[22m [2m│ gzip: 1.88 kB[22m
|
|
78
80
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/result-interpreter.js.map [2m 4.94 kB[22m [2m│ gzip: 1.62 kB[22m
|
|
79
|
-
[34mℹ[39m [2mdist/[22mfragments/internal-fragment.js [2m 4.94 kB[22m [2m│ gzip: 1.46 kB[22m
|
|
80
81
|
[34mℹ[39m [2mdist/[22mquery/unit-of-work/retry-policy.js.map [2m 4.93 kB[22m [2m│ gzip: 1.38 kB[22m
|
|
81
|
-
[34mℹ[39m [2mdist/[22mdb-fragment-definition-builder.d.ts.map [2m 4.91 kB[22m [2m│ gzip: 2.07 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,9 +97,9 @@
|
|
|
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
|
|
@@ -108,6 +108,7 @@
|
|
|
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
109
|
[34mℹ[39m [2mdist/[22madapters/adapters.js.map [2m 2.71 kB[22m [2m│ gzip: 1.03 kB[22m
|
|
110
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
|
|
111
112
|
[34mℹ[39m [2mdist/[22mquery/serialize/dialect/postgres-serializer.js [2m 2.65 kB[22m [2m│ gzip: 0.78 kB[22m
|
|
112
113
|
[34mℹ[39m [2mdist/[22mquery/value-decoding.js [2m 2.54 kB[22m [2m│ gzip: 1.02 kB[22m
|
|
113
114
|
[34mℹ[39m [2mdist/[22msql-driver/sql-driver-adapter.js [2m 2.44 kB[22m [2m│ gzip: 0.80 kB[22m
|
|
@@ -119,7 +120,6 @@
|
|
|
119
120
|
[34mℹ[39m [2mdist/[22mschema/type-conversion/dialect/sqlite.js.map [2m 2.37 kB[22m [2m│ gzip: 0.86 kB[22m
|
|
120
121
|
[34mℹ[39m [2mdist/[22madapters/generic-sql/migration/dialect/postgres.js [2m 2.33 kB[22m [2m│ gzip: 1.02 kB[22m
|
|
121
122
|
[34mℹ[39m [2mdist/[22msql-driver/sql.js.map [2m 2.32 kB[22m [2m│ gzip: 1.03 kB[22m
|
|
122
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work/execute-unit-of-work.d.ts.map [2m 2.25 kB[22m [2m│ gzip: 0.92 kB[22m
|
|
123
123
|
[34mℹ[39m [2mdist/[22mschema/type-conversion/dialect/mysql.js.map [2m 2.23 kB[22m [2m│ gzip: 0.83 kB[22m
|
|
124
124
|
[34mℹ[39m [2mdist/[22mpackages/fragno/dist/api/request-middleware.js [2m 2.18 kB[22m [2m│ gzip: 0.79 kB[22m
|
|
125
125
|
[34mℹ[39m [2mdist/[22mschema/type-conversion/type-mapping.js [2m 2.17 kB[22m [2m│ gzip: 0.94 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 [
|
|
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,54 @@
|
|
|
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
|
+
|
|
35
|
+
## 0.2.1
|
|
36
|
+
|
|
37
|
+
### Patch Changes
|
|
38
|
+
|
|
39
|
+
- aecfa70: feat(db): allow user callbacks in uow options
|
|
40
|
+
- 3faac77: fix(db): child UOWs not reflecting parent's state after execution
|
|
41
|
+
- 01a9c6d: feat(db): add tx() API for simplified transaction handling
|
|
42
|
+
|
|
43
|
+
Add new tx() method to both service and handler contexts that provides a simpler API for
|
|
44
|
+
transaction handling with automatic retry support. Supports two syntaxes: array syntax for
|
|
45
|
+
multiple service calls and callback syntax for direct UOW access. Also enhances restrict() to
|
|
46
|
+
accept options for controlling readiness signaling.
|
|
47
|
+
|
|
48
|
+
- 5028ad3: fix(db): remove dependency on `node:inspect`
|
|
49
|
+
- 20d824a: fix(db): preserve internal IDs in child UOWs when using two-phase pattern with
|
|
50
|
+
mutationPhase
|
|
51
|
+
|
|
3
52
|
## 0.2.0
|
|
4
53
|
|
|
5
54
|
### Minor 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,54 +42,46 @@ type ImplicitDatabaseDependencies<TSchema extends AnySchema> = {
|
|
|
42
42
|
*/
|
|
43
43
|
type DatabaseServiceContext<THooks extends HooksMap> = RequestThisContext & {
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
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.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
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();
|
|
60
|
+
* ```
|
|
48
61
|
*/
|
|
49
|
-
|
|
62
|
+
serviceTx<TSchema extends AnySchema>(schema: TSchema): ServiceTxBuilder<TSchema, readonly [], [], [], unknown, unknown, false, false, false, false, THooks>;
|
|
50
63
|
};
|
|
51
64
|
/**
|
|
52
65
|
* Handler context for database fragments - provides UOW execution with automatic retry support.
|
|
53
66
|
*/
|
|
54
67
|
type DatabaseHandlerContext<THooks extends HooksMap = {}> = RequestThisContext & {
|
|
55
68
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* callback is re-executed on optimistic concurrency conflicts, ensuring retries work properly.
|
|
60
|
-
* Automatically provides the UOW factory from context.
|
|
61
|
-
* Promises in the returned object are awaited 1 level deep.
|
|
62
|
-
*
|
|
63
|
-
* @param callback - Async function that receives a context with forSchema, executeRetrieve, executeMutate, nonce, and currentAttempt
|
|
64
|
-
* @param options - Optional configuration for retry policy and abort signal
|
|
65
|
-
* @returns Promise resolving to the callback's return value with promises awaited 1 level deep
|
|
66
|
-
* @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.
|
|
67
72
|
*
|
|
68
73
|
* @example
|
|
69
74
|
* ```ts
|
|
70
|
-
* const result = await this.
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* const profileId = uow.create("profiles", { userId });
|
|
78
|
-
*
|
|
79
|
-
* // Execute mutation phase
|
|
80
|
-
* await executeMutate();
|
|
81
|
-
*
|
|
82
|
-
* return { userId, profileId };
|
|
83
|
-
* });
|
|
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();
|
|
84
82
|
* ```
|
|
85
83
|
*/
|
|
86
|
-
|
|
87
|
-
forSchema: <TSchema extends AnySchema, H extends HooksMap = THooks>(schema: TSchema, hooks?: H) => TypedUnitOfWork<TSchema, [], unknown, H>;
|
|
88
|
-
executeRetrieve: () => Promise<void>;
|
|
89
|
-
executeMutate: () => Promise<void>;
|
|
90
|
-
nonce: string;
|
|
91
|
-
currentAttempt: number;
|
|
92
|
-
}) => Promise<TResult> | TResult, options?: Omit<ExecuteRestrictedUnitOfWorkOptions, "createUnitOfWork">): Promise<AwaitedPromisesInObject<TResult>>;
|
|
84
|
+
handlerTx(options?: Omit<ExecuteTxOptions, "createUnitOfWork">): HandlerTxBuilder<readonly [], [], [], unknown, unknown, false, false, false, false, THooks>;
|
|
93
85
|
};
|
|
94
86
|
/**
|
|
95
87
|
* Database fragment context provided to user callbacks.
|
|
@@ -153,7 +145,7 @@ declare class DatabaseFragmentDefinitionBuilder<TSchema extends AnySchema, TConf
|
|
|
153
145
|
* ```ts
|
|
154
146
|
* .provideHooks(({ defineHook, config }) => ({
|
|
155
147
|
* onSubscribe: defineHook(async function (payload: { email: string }) {
|
|
156
|
-
* // 'this' context available (HookServiceContext with
|
|
148
|
+
* // 'this' context available (HookServiceContext with idempotencyKey)
|
|
157
149
|
* await config.onSubscribe?.(payload.email);
|
|
158
150
|
* }),
|
|
159
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 } 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,32 +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 serviceContext = {
|
|
178
|
-
|
|
176
|
+
const serviceContext = { serviceTx };
|
|
177
|
+
function handlerTx(execOptions) {
|
|
179
178
|
const currentStorage = storage.getStore();
|
|
180
179
|
if (!currentStorage) throw new Error("No storage in context. Handler must be called within a request context.");
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
return executeRestrictedUnitOfWork(wrappedCallback, {
|
|
180
|
+
const userOnBeforeMutate = execOptions?.onBeforeMutate;
|
|
181
|
+
const userOnAfterMutate = execOptions?.onAfterMutate;
|
|
182
|
+
return createHandlerTxBuilder({
|
|
185
183
|
...execOptions,
|
|
186
184
|
createUnitOfWork: () => {
|
|
187
185
|
currentStorage.uow.reset();
|
|
188
186
|
if (hooksConfig) currentStorage.uow.registerSchema(hooksConfig.internalFragment.$internal.deps.schema, hooksConfig.internalFragment.$internal.deps.namespace);
|
|
189
187
|
return currentStorage.uow;
|
|
190
188
|
},
|
|
191
|
-
onBeforeMutate:
|
|
192
|
-
|
|
189
|
+
onBeforeMutate: (uow) => {
|
|
190
|
+
if (hooksConfig) prepareHookMutations(uow, hooksConfig);
|
|
191
|
+
if (userOnBeforeMutate) userOnBeforeMutate(uow);
|
|
192
|
+
},
|
|
193
|
+
onAfterMutate: async (uow) => {
|
|
194
|
+
if (hooksConfig) await processHooks(hooksConfig);
|
|
195
|
+
if (userOnAfterMutate) await userOnAfterMutate(uow);
|
|
196
|
+
}
|
|
193
197
|
});
|
|
194
198
|
}
|
|
195
199
|
return {
|
|
196
200
|
serviceContext,
|
|
197
|
-
handlerContext: {
|
|
201
|
+
handlerContext: { handlerTx }
|
|
198
202
|
};
|
|
199
203
|
}).build(),
|
|
200
204
|
dependencies
|