@fragno-dev/db 0.1.13 → 0.1.14
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 +48 -41
- package/CHANGELOG.md +6 -0
- package/dist/adapters/adapters.d.ts +13 -1
- package/dist/adapters/adapters.d.ts.map +1 -1
- package/dist/adapters/adapters.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.d.ts +2 -0
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +6 -1
- package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-query.js +6 -4
- package/dist/adapters/drizzle/drizzle-query.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts +0 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.js +49 -36
- package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-decoder.js +1 -1
- package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +1 -1
- package/dist/adapters/drizzle/shared.d.ts +14 -1
- package/dist/adapters/drizzle/shared.d.ts.map +1 -0
- package/dist/adapters/kysely/kysely-adapter.d.ts +2 -0
- package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.js +7 -2
- package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
- package/dist/adapters/kysely/kysely-query.js +5 -3
- package/dist/adapters/kysely/kysely-query.js.map +1 -1
- package/dist/adapters/kysely/kysely-shared.d.ts +11 -0
- package/dist/adapters/kysely/kysely-shared.d.ts.map +1 -0
- package/dist/adapters/kysely/kysely-uow-compiler.js +38 -9
- package/dist/adapters/kysely/kysely-uow-compiler.js.map +1 -1
- package/dist/bind-services.d.ts +7 -0
- package/dist/bind-services.d.ts.map +1 -0
- package/dist/bind-services.js +14 -0
- package/dist/bind-services.js.map +1 -0
- package/dist/fragment.d.ts +131 -12
- package/dist/fragment.d.ts.map +1 -1
- package/dist/fragment.js +107 -8
- package/dist/fragment.js.map +1 -1
- package/dist/mod.d.ts +4 -2
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +3 -2
- package/dist/mod.js.map +1 -1
- package/dist/query/query.d.ts +2 -2
- package/dist/query/query.d.ts.map +1 -1
- package/dist/query/unit-of-work.d.ts +100 -15
- package/dist/query/unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work.js +214 -7
- package/dist/query/unit-of-work.js.map +1 -1
- package/package.json +3 -3
- package/src/adapters/adapters.ts +14 -0
- package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +6 -1
- package/src/adapters/drizzle/drizzle-adapter-sqlite.test.ts +133 -5
- package/src/adapters/drizzle/drizzle-adapter.ts +16 -1
- package/src/adapters/drizzle/drizzle-query.ts +26 -15
- package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +57 -57
- package/src/adapters/drizzle/drizzle-uow-compiler.ts +79 -39
- package/src/adapters/drizzle/drizzle-uow-decoder.ts +2 -5
- package/src/adapters/kysely/kysely-adapter-pglite.test.ts +2 -2
- package/src/adapters/kysely/kysely-adapter.ts +16 -1
- package/src/adapters/kysely/kysely-query.ts +26 -15
- package/src/adapters/kysely/kysely-uow-compiler.test.ts +43 -43
- package/src/adapters/kysely/kysely-uow-compiler.ts +50 -14
- package/src/adapters/kysely/kysely-uow-joins.test.ts +30 -30
- package/src/bind-services.test.ts +214 -0
- package/src/bind-services.ts +37 -0
- package/src/db-fragment.test.ts +800 -0
- package/src/fragment.ts +557 -28
- package/src/mod.ts +19 -0
- package/src/query/query.ts +2 -2
- package/src/query/unit-of-work-multi-schema.test.ts +64 -0
- package/src/query/unit-of-work-types.test.ts +13 -0
- package/src/query/unit-of-work.test.ts +5 -9
- package/src/query/unit-of-work.ts +511 -62
- package/src/uow-context-integration.test.ts +102 -0
- package/src/uow-context.test.ts +182 -0
- package/src/fragment.test.ts +0 -341
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @fragno-dev/db@0.1.
|
|
2
|
+
> @fragno-dev/db@0.1.14 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,60 +7,61 @@
|
|
|
7
7
|
[34mℹ[39m entry: [34msrc/fragment.ts, src/id.ts, src/mod.ts, src/adapters/adapters.ts, src/migration-engine/generation-engine.ts, src/query/cursor.ts, src/query/query.ts, src/query/unit-of-work.ts, src/schema/create.ts, src/adapters/drizzle/drizzle-adapter.ts, src/adapters/drizzle/generate.ts, src/adapters/kysely/kysely-adapter.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.js[22m [2m24.77 kB[22m [2m│ gzip: 5.11 kB[22m
|
|
10
11
|
[34mℹ[39m [2mdist/[22m[1mschema/create.js[22m [2m19.85 kB[22m [2m│ gzip: 5.20 kB[22m
|
|
11
|
-
[34mℹ[39m [2mdist/[22m[1mquery/unit-of-work.js[22m [2m18.76 kB[22m [2m│ gzip: 4.27 kB[22m
|
|
12
12
|
[34mℹ[39m [2mdist/[22m[1madapters/drizzle/generate.js[22m [2m14.82 kB[22m [2m│ gzip: 3.64 kB[22m
|
|
13
13
|
[34mℹ[39m [2mdist/[22m[1mmigration-engine/generation-engine.js[22m [2m 8.40 kB[22m [2m│ gzip: 2.26 kB[22m
|
|
14
|
-
[34mℹ[39m [2mdist/[22m[
|
|
14
|
+
[34mℹ[39m [2mdist/[22m[1mfragment.js[22m [2m 5.75 kB[22m [2m│ gzip: 1.45 kB[22m
|
|
15
|
+
[34mℹ[39m [2mdist/[22m[1madapters/kysely/kysely-adapter.js[22m [2m 5.49 kB[22m [2m│ gzip: 1.70 kB[22m
|
|
15
16
|
[34mℹ[39m [2mdist/[22m[1mquery/cursor.js[22m [2m 4.32 kB[22m [2m│ gzip: 1.51 kB[22m
|
|
16
|
-
[34mℹ[39m [2mdist/[22m[1mmod.js[22m [2m
|
|
17
|
-
[34mℹ[39m [2mdist/[22m[
|
|
18
|
-
[34mℹ[39m [2mdist/[22m[1madapters/drizzle/drizzle-adapter.js[22m [2m 2.04 kB[22m [2m│ gzip: 0.77 kB[22m
|
|
17
|
+
[34mℹ[39m [2mdist/[22m[1mmod.js[22m [2m 3.03 kB[22m [2m│ gzip: 1.00 kB[22m
|
|
18
|
+
[34mℹ[39m [2mdist/[22m[1madapters/drizzle/drizzle-adapter.js[22m [2m 2.26 kB[22m [2m│ gzip: 0.83 kB[22m
|
|
19
19
|
[34mℹ[39m [2mdist/[22m[1madapters/adapters.js[22m [2m 0.33 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
20
20
|
[34mℹ[39m [2mdist/[22m[1mid.js[22m [2m 0.07 kB[22m [2m│ gzip: 0.07 kB[22m
|
|
21
21
|
[34mℹ[39m [2mdist/[22m[1mquery/query.js[22m [2m 0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
22
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work.js.map [
|
|
22
|
+
[34mℹ[39m [2mdist/[22mquery/unit-of-work.js.map [2m69.11 kB[22m [2m│ gzip: 13.49 kB[22m
|
|
23
23
|
[34mℹ[39m [2mdist/[22mschema/create.js.map [2m48.81 kB[22m [2m│ gzip: 11.78 kB[22m
|
|
24
24
|
[34mℹ[39m [2mdist/[22madapters/drizzle/generate.js.map [2m34.28 kB[22m [2m│ gzip: 8.39 kB[22m
|
|
25
|
-
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-compiler.js.map [
|
|
25
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-compiler.js.map [2m34.18 kB[22m [2m│ gzip: 8.32 kB[22m
|
|
26
26
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-query-builder.js.map [2m30.22 kB[22m [2m│ gzip: 7.85 kB[22m
|
|
27
|
-
[34mℹ[39m [2mdist/[
|
|
27
|
+
[34mℹ[39m [2mdist/[22mfragment.js.map [2m27.71 kB[22m [2m│ gzip: 5.95 kB[22m
|
|
28
|
+
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-query.js.map [2m18.65 kB[22m [2m│ gzip: 5.13 kB[22m
|
|
29
|
+
[34mℹ[39m [2mdist/[22mquery/unit-of-work.d.ts.map [2m17.00 kB[22m [2m│ gzip: 6.23 kB[22m
|
|
28
30
|
[34mℹ[39m [2mdist/[22mmigration-engine/generation-engine.js.map [2m16.40 kB[22m [2m│ gzip: 4.39 kB[22m
|
|
29
|
-
[34mℹ[39m [2mdist/[22madapters/
|
|
30
|
-
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-compiler.js [
|
|
31
|
-
[34mℹ[39m [2mdist/[22madapters/
|
|
31
|
+
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-uow-compiler.js.map [2m16.11 kB[22m [2m│ gzip: 4.53 kB[22m
|
|
32
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-compiler.js [2m15.54 kB[22m [2m│ gzip: 3.91 kB[22m
|
|
33
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-query.js.map [2m15.00 kB[22m [2m│ gzip: 3.99 kB[22m
|
|
32
34
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-query-builder.js [2m13.63 kB[22m [2m│ gzip: 3.77 kB[22m
|
|
33
35
|
[34mℹ[39m [2mdist/[22mschema/serialize.js.map [2m12.70 kB[22m [2m│ gzip: 2.80 kB[22m
|
|
34
36
|
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-executor.js.map [2m12.65 kB[22m [2m│ gzip: 3.76 kB[22m
|
|
37
|
+
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-adapter.js.map [2m12.15 kB[22m [2m│ gzip: 3.68 kB[22m
|
|
35
38
|
[34mℹ[39m [2mdist/[22mschema/create.d.ts.map [2m11.85 kB[22m [2m│ gzip: 4.65 kB[22m
|
|
36
39
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-sqlite.js.map [2m11.80 kB[22m [2m│ gzip: 3.28 kB[22m
|
|
37
|
-
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-adapter.js.map [2m11.66 kB[22m [2m│ gzip: 3.55 kB[22m
|
|
38
40
|
[34mℹ[39m [2mdist/[22mquery/result-transform.js.map [2m11.61 kB[22m [2m│ gzip: 3.42 kB[22m
|
|
39
41
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-mssql.js.map [2m11.48 kB[22m [2m│ gzip: 2.94 kB[22m
|
|
40
|
-
[34mℹ[39m [2mdist/[22mquery/unit-of-work.d.ts.map [2m11.36 kB[22m [2m│ gzip: 4.32 kB[22m
|
|
41
42
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-postgres.js.map [2m10.44 kB[22m [2m│ gzip: 2.64 kB[22m
|
|
42
43
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-base.js.map [2m 9.77 kB[22m [2m│ gzip: 3.27 kB[22m
|
|
43
|
-
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-decoder.js.map [2m 9.
|
|
44
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-decoder.js.map [2m 9.56 kB[22m [2m│ gzip: 3.34 kB[22m
|
|
44
45
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-mysql.js.map [2m 9.30 kB[22m [2m│ gzip: 2.37 kB[22m
|
|
45
46
|
[34mℹ[39m [2mdist/[22mquery/condition-builder.js.map [2m 9.18 kB[22m [2m│ gzip: 2.42 kB[22m
|
|
47
|
+
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-query.js [2m 8.34 kB[22m [2m│ gzip: 2.41 kB[22m
|
|
46
48
|
[34mℹ[39m [2mdist/[22mmigration-engine/auto-from-schema.js.map [2m 8.31 kB[22m [2m│ gzip: 2.18 kB[22m
|
|
47
|
-
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-query.js [2m 8.18 kB[22m [2m│ gzip: 2.37 kB[22m
|
|
48
49
|
[34mℹ[39m [2mdist/[22mquery/cursor.js.map [2m 8.07 kB[22m [2m│ gzip: 2.57 kB[22m
|
|
49
|
-
[34mℹ[39m [2mdist/[
|
|
50
|
-
[34mℹ[39m [2mdist/[22mquery/query.d.ts.map [2m 7.78 kB[22m [2m│ gzip: 2.89 kB[22m
|
|
50
|
+
[34mℹ[39m [2mdist/[22mquery/query.d.ts.map [2m 7.79 kB[22m [2m│ gzip: 2.90 kB[22m
|
|
51
51
|
[34mℹ[39m [2mdist/[22mmigration-engine/create.js.map [2m 7.32 kB[22m [2m│ gzip: 2.14 kB[22m
|
|
52
|
+
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-uow-compiler.js [2m 7.16 kB[22m [2m│ gzip: 2.13 kB[22m
|
|
52
53
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-uow-executor.js.map [2m 6.98 kB[22m [2m│ gzip: 2.48 kB[22m
|
|
53
|
-
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-query.js [2m 6.
|
|
54
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-query.js [2m 6.96 kB[22m [2m│ gzip: 1.93 kB[22m
|
|
54
55
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-query-compiler.js.map [2m 6.50 kB[22m [2m│ gzip: 1.62 kB[22m
|
|
55
56
|
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-executor.js [2m 6.18 kB[22m [2m│ gzip: 1.90 kB[22m
|
|
56
|
-
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-uow-compiler.js [2m 6.09 kB[22m [2m│ gzip: 1.87 kB[22m
|
|
57
57
|
[34mℹ[39m [2mdist/[22mquery/result-transform.js [2m 6.01 kB[22m [2m│ gzip: 1.92 kB[22m
|
|
58
|
+
[34mℹ[39m [2mdist/[22mmod.js.map [2m 5.76 kB[22m [2m│ gzip: 1.89 kB[22m
|
|
58
59
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-mssql.js [2m 5.51 kB[22m [2m│ gzip: 1.52 kB[22m
|
|
59
60
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-sqlite.js [2m 5.48 kB[22m [2m│ gzip: 1.63 kB[22m
|
|
60
|
-
[34mℹ[39m [2mdist/[
|
|
61
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-adapter.js.map [2m 5.09 kB[22m [2m│ gzip: 1.85 kB[22m
|
|
61
62
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-postgres.js [2m 4.91 kB[22m [2m│ gzip: 1.39 kB[22m
|
|
62
|
-
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-decoder.js [2m 4.
|
|
63
|
-
[34mℹ[39m [2mdist/[
|
|
63
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-decoder.js [2m 4.64 kB[22m [2m│ gzip: 1.70 kB[22m
|
|
64
|
+
[34mℹ[39m [2mdist/[22mfragment.d.ts.map [2m 4.64 kB[22m [2m│ gzip: 1.86 kB[22m
|
|
64
65
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-mysql.js [2m 4.34 kB[22m [2m│ gzip: 1.20 kB[22m
|
|
65
66
|
[34mℹ[39m [2mdist/[22mmigration-engine/auto-from-schema.js [2m 4.33 kB[22m [2m│ gzip: 1.21 kB[22m
|
|
66
67
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-base.js [2m 4.31 kB[22m [2m│ gzip: 1.69 kB[22m
|
|
@@ -77,29 +78,31 @@
|
|
|
77
78
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute.js.map [2m 2.34 kB[22m [2m│ gzip: 0.88 kB[22m
|
|
78
79
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-query-compiler.js [2m 2.31 kB[22m [2m│ gzip: 0.61 kB[22m
|
|
79
80
|
[34mℹ[39m [2mdist/[22mquery/condition-builder.d.ts.map [2m 2.01 kB[22m [2m│ gzip: 0.74 kB[22m
|
|
81
|
+
[34mℹ[39m [2mdist/[22madapters/adapters.js.map [2m 2.01 kB[22m [2m│ gzip: 0.80 kB[22m
|
|
80
82
|
[34mℹ[39m [2mdist/[22madapters/drizzle/join-column-utils.js.map [2m 1.98 kB[22m [2m│ gzip: 0.88 kB[22m
|
|
81
83
|
[34mℹ[39m [2mdist/[22mquery/condition-builder.js [2m 1.89 kB[22m [2m│ gzip: 0.70 kB[22m
|
|
82
|
-
[34mℹ[39m [2mdist/[
|
|
84
|
+
[34mℹ[39m [2mdist/[22mbind-services.js.map [2m 1.66 kB[22m [2m│ gzip: 0.72 kB[22m
|
|
83
85
|
[34mℹ[39m [2mdist/[22mshared/settings-schema.js [2m 1.57 kB[22m [2m│ gzip: 0.65 kB[22m
|
|
84
|
-
[34mℹ[39m [2mdist/[22madapters/adapters.js.map [2m 1.55 kB[22m [2m│ gzip: 0.65 kB[22m
|
|
85
86
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute.js [2m 1.40 kB[22m [2m│ gzip: 0.59 kB[22m
|
|
86
87
|
[34mℹ[39m [2mdist/[22madapters/kysely/migration/execute-factory.js [2m 1.34 kB[22m [2m│ gzip: 0.55 kB[22m
|
|
87
88
|
[34mℹ[39m [2mdist/[22mquery/orm/orm.js [2m 1.33 kB[22m [2m│ gzip: 0.60 kB[22m
|
|
88
89
|
[34mℹ[39m [2mdist/[22mutil/import-generator.js.map [2m 1.30 kB[22m [2m│ gzip: 0.62 kB[22m
|
|
89
90
|
[34mℹ[39m [2mdist/[22madapters/drizzle/shared.js [2m 1.27 kB[22m [2m│ gzip: 0.66 kB[22m
|
|
90
|
-
[34mℹ[39m [2mdist/[22mmod.d.ts.map [2m 1.
|
|
91
|
+
[34mℹ[39m [2mdist/[22mmod.d.ts.map [2m 1.17 kB[22m [2m│ gzip: 0.57 kB[22m
|
|
91
92
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-connection-pool.js [2m 1.15 kB[22m [2m│ gzip: 0.52 kB[22m
|
|
92
93
|
[34mℹ[39m [2mdist/[22madapters/drizzle/join-column-utils.js [2m 1.14 kB[22m [2m│ gzip: 0.55 kB[22m
|
|
93
94
|
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-connection-pool.js [2m 1.11 kB[22m [2m│ gzip: 0.53 kB[22m
|
|
94
95
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-shared.js.map [2m 1.07 kB[22m [2m│ gzip: 0.53 kB[22m
|
|
95
|
-
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-adapter.d.ts.map [2m 0.
|
|
96
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-adapter.d.ts.map [2m 0.94 kB[22m [2m│ gzip: 0.43 kB[22m
|
|
96
97
|
[34mℹ[39m [2mdist/[22mutil/parse.js.map [2m 0.83 kB[22m [2m│ gzip: 0.48 kB[22m
|
|
97
|
-
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-adapter.d.ts.map [2m 0.82 kB[22m [2m│ gzip: 0.
|
|
98
|
-
[34mℹ[39m [2mdist/[22madapters/adapters.d.ts.map [2m 0.
|
|
98
|
+
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-adapter.d.ts.map [2m 0.82 kB[22m [2m│ gzip: 0.43 kB[22m
|
|
99
|
+
[34mℹ[39m [2mdist/[22madapters/adapters.d.ts.map [2m 0.77 kB[22m [2m│ gzip: 0.38 kB[22m
|
|
99
100
|
[34mℹ[39m [2mdist/[22mmigration-engine/generation-engine.d.ts.map [2m 0.69 kB[22m [2m│ gzip: 0.36 kB[22m
|
|
100
101
|
[34mℹ[39m [2mdist/[22mutil/import-generator.js [2m 0.65 kB[22m [2m│ gzip: 0.36 kB[22m
|
|
101
102
|
[34mℹ[39m [2mdist/[22mquery/cursor.d.ts.map [2m 0.58 kB[22m [2m│ gzip: 0.33 kB[22m
|
|
103
|
+
[34mℹ[39m [2mdist/[22mbind-services.d.ts.map [2m 0.58 kB[22m [2m│ gzip: 0.32 kB[22m
|
|
102
104
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-shared.js [2m 0.54 kB[22m [2m│ gzip: 0.31 kB[22m
|
|
105
|
+
[34mℹ[39m [2mdist/[22mbind-services.js [2m 0.52 kB[22m [2m│ gzip: 0.29 kB[22m
|
|
103
106
|
[34mℹ[39m [2mdist/[22mmigration-engine/shared.d.ts.map [2m 0.51 kB[22m [2m│ gzip: 0.30 kB[22m
|
|
104
107
|
[34mℹ[39m [2mdist/[22mquery/orm/orm.d.ts.map [2m 0.45 kB[22m [2m│ gzip: 0.28 kB[22m
|
|
105
108
|
[34mℹ[39m [2mdist/[22mutil/parse.js [2m 0.45 kB[22m [2m│ gzip: 0.29 kB[22m
|
|
@@ -108,20 +111,22 @@
|
|
|
108
111
|
[34mℹ[39m [2mdist/[22mschema-generator/schema-generator.d.ts.map [2m 0.23 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
109
112
|
[34mℹ[39m [2mdist/[22mutil/types.d.ts.map [2m 0.22 kB[22m [2m│ gzip: 0.16 kB[22m
|
|
110
113
|
[34mℹ[39m [2mdist/[22mmigration-engine/shared.js [2m 0.21 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
114
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-compiler.d.ts.map [2m 0.19 kB[22m [2m│ gzip: 0.15 kB[22m
|
|
111
115
|
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-query.d.ts.map [2m 0.18 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
112
|
-
[34mℹ[39m [2mdist/[22madapters/drizzle/drizzle-uow-compiler.d.ts.map [2m 0.18 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
113
116
|
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-query.d.ts.map [2m 0.17 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
117
|
+
[34mℹ[39m [2mdist/[22madapters/kysely/kysely-shared.d.ts.map [2m 0.16 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
118
|
+
[34mℹ[39m [2mdist/[22madapters/drizzle/shared.d.ts.map [2m 0.15 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
114
119
|
[34mℹ[39m [2mdist/[22mshared/providers.d.ts.map [2m 0.15 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
120
|
+
[34mℹ[39m [2mdist/[22m[32m[1mquery/unit-of-work.d.ts[22m[39m [2m23.75 kB[22m [2m│ gzip: 5.18 kB[22m
|
|
115
121
|
[34mℹ[39m [2mdist/[22m[32m[1mschema/create.d.ts[22m[39m [2m19.46 kB[22m [2m│ gzip: 4.72 kB[22m
|
|
116
|
-
[34mℹ[39m [2mdist/[22m[32m[
|
|
117
|
-
[34mℹ[39m [2mdist/[22m[32m[1mquery/query.d.ts[22m[39m [2m 7.
|
|
122
|
+
[34mℹ[39m [2mdist/[22m[32m[1mfragment.d.ts[22m[39m [2m 7.84 kB[22m [2m│ gzip: 1.95 kB[22m
|
|
123
|
+
[34mℹ[39m [2mdist/[22m[32m[1mquery/query.d.ts[22m[39m [2m 7.50 kB[22m [2m│ gzip: 1.80 kB[22m
|
|
118
124
|
[34mℹ[39m [2mdist/[22m[32m[1mquery/cursor.d.ts[22m[39m [2m 3.23 kB[22m [2m│ gzip: 1.15 kB[22m
|
|
119
|
-
[34mℹ[39m [2mdist/[22m[32m[1mmod.d.ts[22m[39m [2m
|
|
120
|
-
[34mℹ[39m [2mdist/[22m[32m[1mfragment.d.ts[22m[39m [2m 2.39 kB[22m [2m│ gzip: 0.75 kB[22m
|
|
125
|
+
[34mℹ[39m [2mdist/[22m[32m[1mmod.d.ts[22m[39m [2m 3.01 kB[22m [2m│ gzip: 0.95 kB[22m
|
|
121
126
|
[34mℹ[39m [2mdist/[22m[32m[1mmigration-engine/generation-engine.d.ts[22m[39m [2m 2.00 kB[22m [2m│ gzip: 0.72 kB[22m
|
|
122
|
-
[34mℹ[39m [2mdist/[22m[32m[1madapters/adapters.d.ts[22m[39m [2m 1.
|
|
123
|
-
[34mℹ[39m [2mdist/[22m[32m[1madapters/drizzle/drizzle-adapter.d.ts[22m[39m [2m 1.
|
|
124
|
-
[34mℹ[39m [2mdist/[22m[32m[1madapters/kysely/kysely-adapter.d.ts[22m[39m [2m 1.
|
|
127
|
+
[34mℹ[39m [2mdist/[22m[32m[1madapters/adapters.d.ts[22m[39m [2m 1.94 kB[22m [2m│ gzip: 0.75 kB[22m
|
|
128
|
+
[34mℹ[39m [2mdist/[22m[32m[1madapters/drizzle/drizzle-adapter.d.ts[22m[39m [2m 1.46 kB[22m [2m│ gzip: 0.59 kB[22m
|
|
129
|
+
[34mℹ[39m [2mdist/[22m[32m[1madapters/kysely/kysely-adapter.d.ts[22m[39m [2m 1.40 kB[22m [2m│ gzip: 0.56 kB[22m
|
|
125
130
|
[34mℹ[39m [2mdist/[22m[32m[1madapters/drizzle/generate.d.ts[22m[39m [2m 0.82 kB[22m [2m│ gzip: 0.42 kB[22m
|
|
126
131
|
[34mℹ[39m [2mdist/[22m[32m[1mid.d.ts[22m[39m [2m 0.07 kB[22m [2m│ gzip: 0.07 kB[22m
|
|
127
132
|
[34mℹ[39m [2mdist/[22m[32mmigration-engine/shared.d.ts[39m [2m 2.76 kB[22m [2m│ gzip: 0.99 kB[22m
|
|
@@ -130,10 +135,12 @@
|
|
|
130
135
|
[34mℹ[39m [2mdist/[22m[32madapters/drizzle/drizzle-query.d.ts[39m [2m 0.71 kB[22m [2m│ gzip: 0.41 kB[22m
|
|
131
136
|
[34mℹ[39m [2mdist/[22m[32madapters/kysely/kysely-query.d.ts[39m [2m 0.65 kB[22m [2m│ gzip: 0.39 kB[22m
|
|
132
137
|
[34mℹ[39m [2mdist/[22m[32mquery/orm/orm.d.ts[39m [2m 0.61 kB[22m [2m│ gzip: 0.34 kB[22m
|
|
138
|
+
[34mℹ[39m [2mdist/[22m[32mbind-services.d.ts[39m [2m 0.54 kB[22m [2m│ gzip: 0.30 kB[22m
|
|
139
|
+
[34mℹ[39m [2mdist/[22m[32madapters/drizzle/shared.d.ts[39m [2m 0.37 kB[22m [2m│ gzip: 0.24 kB[22m
|
|
133
140
|
[34mℹ[39m [2mdist/[22m[32mschema-generator/schema-generator.d.ts[39m [2m 0.37 kB[22m [2m│ gzip: 0.20 kB[22m
|
|
141
|
+
[34mℹ[39m [2mdist/[22m[32madapters/kysely/kysely-shared.d.ts[39m [2m 0.36 kB[22m [2m│ gzip: 0.23 kB[22m
|
|
134
142
|
[34mℹ[39m [2mdist/[22m[32mshared/providers.d.ts[39m [2m 0.26 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
135
143
|
[34mℹ[39m [2mdist/[22m[32mutil/types.d.ts[39m [2m 0.26 kB[22m [2m│ gzip: 0.21 kB[22m
|
|
136
|
-
[34mℹ[39m [2mdist/[22m[32madapters/drizzle/drizzle-uow-compiler.d.ts[39m [2m 0.
|
|
137
|
-
[34mℹ[39m
|
|
138
|
-
[
|
|
139
|
-
[32m✔[39m Build complete in [32m10785ms[39m
|
|
144
|
+
[34mℹ[39m [2mdist/[22m[32madapters/drizzle/drizzle-uow-compiler.d.ts[39m [2m 0.24 kB[22m [2m│ gzip: 0.18 kB[22m
|
|
145
|
+
[34mℹ[39m 135 files, total: 859.29 kB
|
|
146
|
+
[32m✔[39m Build complete in [32m9769ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,13 @@ import { SchemaGenerator } from "../schema-generator/schema-generator.js";
|
|
|
6
6
|
//#region src/adapters/adapters.d.ts
|
|
7
7
|
declare const fragnoDatabaseAdapterNameFakeSymbol: "$fragno-database-adapter-name";
|
|
8
8
|
declare const fragnoDatabaseAdapterVersionFakeSymbol: "$fragno-database-adapter-version";
|
|
9
|
+
/**
|
|
10
|
+
* Maps logical table names (used by fragment authors) to physical table names (with namespace suffix)
|
|
11
|
+
*/
|
|
12
|
+
interface TableNameMapper {
|
|
13
|
+
toPhysical(logicalName: string): string;
|
|
14
|
+
toLogical(physicalName: string): string;
|
|
15
|
+
}
|
|
9
16
|
interface DatabaseAdapter<TUOWConfig = void> {
|
|
10
17
|
[fragnoDatabaseAdapterNameFakeSymbol]: string;
|
|
11
18
|
[fragnoDatabaseAdapterVersionFakeSymbol]: number;
|
|
@@ -25,9 +32,14 @@ interface DatabaseAdapter<TUOWConfig = void> {
|
|
|
25
32
|
}[], options?: {
|
|
26
33
|
path?: string;
|
|
27
34
|
}) => SchemaGenerator;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a table name mapper for the given namespace.
|
|
37
|
+
* Used to convert between logical table names and physical table names.
|
|
38
|
+
*/
|
|
39
|
+
createTableNameMapper: (namespace: string) => TableNameMapper;
|
|
28
40
|
isConnectionHealthy: () => Promise<boolean>;
|
|
29
41
|
close: () => Promise<void>;
|
|
30
42
|
}
|
|
31
43
|
//#endregion
|
|
32
|
-
export { DatabaseAdapter, fragnoDatabaseAdapterNameFakeSymbol, fragnoDatabaseAdapterVersionFakeSymbol };
|
|
44
|
+
export { DatabaseAdapter, TableNameMapper, fragnoDatabaseAdapterNameFakeSymbol, fragnoDatabaseAdapterVersionFakeSymbol };
|
|
33
45
|
//# sourceMappingURL=adapters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.d.ts","names":[],"sources":["../../src/adapters/adapters.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa;cACA;
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","names":[],"sources":["../../src/adapters/adapters.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa;cACA;AADb;AACA;AAKA;AAKiB,UALA,eAAA,CAKe;EAC7B,UAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,MAAA;EACA,SAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;AAOmC,UATrB,eASqB,CAAA,aAAA,IAAA,CAAA,CAAA;EAC1B,CATT,mCAAA,CASS,EAAA,MAAA;EAES,CAVlB,sCAAA,CAUkB,EAAA,MAAA;EAAG;;;EAEsC,gBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAPvB,OAOuB,CAAA,MAAA,GAAA,SAAA,CAAA;EAAyB,iBAAA,EAAA,CAAA,gBALjD,SAKiD,CAAA,CAAA,MAAA,EAJ3E,CAI2E,EAAA,SAAA,EAAA,MAAA,EAAA,GAFhF,aAEgF,CAFlE,CAEkE,EAF/D,UAE+D,CAAA;EAO9D,qBAAA,CAAA,EAAA,CAAA,gBAPkB,SAOlB,CAAA,CAAA,MAAA,EAPqC,CAOrC,EAAA,SAAA,EAAA,MAAA,EAAA,GAP8D,QAO9D;EAElB;;;;EAUe,qBAAA,CAAA,EAAA,CAAA,SAAA,EAAA;YAZG;;;;QAElB;;;;;gDAMyC;6BAEnB;eAEd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.js","names":[],"sources":["../../src/adapters/adapters.ts"],"sourcesContent":["import type { Migrator } from \"../migration-engine/create\";\nimport type { AbstractQuery } from \"../query/query\";\nimport type { SchemaGenerator } from \"../schema-generator/schema-generator\";\nimport type { AnySchema } from \"../schema/create\";\n\nexport const fragnoDatabaseAdapterNameFakeSymbol = \"$fragno-database-adapter-name\" as const;\nexport const fragnoDatabaseAdapterVersionFakeSymbol = \"$fragno-database-adapter-version\" as const;\n\nexport interface DatabaseAdapter<TUOWConfig = void> {\n [fragnoDatabaseAdapterNameFakeSymbol]: string;\n [fragnoDatabaseAdapterVersionFakeSymbol]: number;\n\n /**\n * Get current schema version, undefined if not initialized.\n */\n getSchemaVersion(namespace: string): Promise<string | undefined>;\n\n createQueryEngine: <const T extends AnySchema>(\n schema: T,\n namespace: string,\n ) => AbstractQuery<T, TUOWConfig>;\n\n createMigrationEngine?: <const T extends AnySchema>(schema: T, namespace: string) => Migrator;\n\n /**\n * Generate a combined schema file from one or more fragments.\n * If not implemented, schema generation is not supported for this adapter.\n */\n createSchemaGenerator?: (\n fragments: { schema: AnySchema; namespace: string }[],\n options?: { path?: string },\n ) => SchemaGenerator;\n\n isConnectionHealthy: () => Promise<boolean>;\n\n close: () => Promise<void>;\n}\n"],"mappings":";AAKA,MAAa,sCAAsC;AACnD,MAAa,yCAAyC"}
|
|
1
|
+
{"version":3,"file":"adapters.js","names":[],"sources":["../../src/adapters/adapters.ts"],"sourcesContent":["import type { Migrator } from \"../migration-engine/create\";\nimport type { AbstractQuery } from \"../query/query\";\nimport type { SchemaGenerator } from \"../schema-generator/schema-generator\";\nimport type { AnySchema } from \"../schema/create\";\n\nexport const fragnoDatabaseAdapterNameFakeSymbol = \"$fragno-database-adapter-name\" as const;\nexport const fragnoDatabaseAdapterVersionFakeSymbol = \"$fragno-database-adapter-version\" as const;\n\n/**\n * Maps logical table names (used by fragment authors) to physical table names (with namespace suffix)\n */\nexport interface TableNameMapper {\n toPhysical(logicalName: string): string;\n toLogical(physicalName: string): string;\n}\n\nexport interface DatabaseAdapter<TUOWConfig = void> {\n [fragnoDatabaseAdapterNameFakeSymbol]: string;\n [fragnoDatabaseAdapterVersionFakeSymbol]: number;\n\n /**\n * Get current schema version, undefined if not initialized.\n */\n getSchemaVersion(namespace: string): Promise<string | undefined>;\n\n createQueryEngine: <const T extends AnySchema>(\n schema: T,\n namespace: string,\n ) => AbstractQuery<T, TUOWConfig>;\n\n createMigrationEngine?: <const T extends AnySchema>(schema: T, namespace: string) => Migrator;\n\n /**\n * Generate a combined schema file from one or more fragments.\n * If not implemented, schema generation is not supported for this adapter.\n */\n createSchemaGenerator?: (\n fragments: { schema: AnySchema; namespace: string }[],\n options?: { path?: string },\n ) => SchemaGenerator;\n\n /**\n * Creates a table name mapper for the given namespace.\n * Used to convert between logical table names and physical table names.\n */\n createTableNameMapper: (namespace: string) => TableNameMapper;\n\n isConnectionHealthy: () => Promise<boolean>;\n\n close: () => Promise<void>;\n}\n"],"mappings":";AAKA,MAAa,sCAAsC;AACnD,MAAa,yCAAyC"}
|
|
@@ -2,6 +2,7 @@ import { AnySchema } from "../../schema/create.js";
|
|
|
2
2
|
import { AbstractQuery } from "../../query/query.js";
|
|
3
3
|
import { SchemaGenerator } from "../../schema-generator/schema-generator.js";
|
|
4
4
|
import { DatabaseAdapter, fragnoDatabaseAdapterNameFakeSymbol, fragnoDatabaseAdapterVersionFakeSymbol } from "../adapters.js";
|
|
5
|
+
import { TableNameMapper } from "./shared.js";
|
|
5
6
|
import { DrizzleUOWConfig } from "./drizzle-query.js";
|
|
6
7
|
|
|
7
8
|
//#region src/adapters/drizzle/drizzle-adapter.d.ts
|
|
@@ -15,6 +16,7 @@ declare class DrizzleAdapter implements DatabaseAdapter<DrizzleUOWConfig> {
|
|
|
15
16
|
get [fragnoDatabaseAdapterNameFakeSymbol](): string;
|
|
16
17
|
get [fragnoDatabaseAdapterVersionFakeSymbol](): number;
|
|
17
18
|
close(): Promise<void>;
|
|
19
|
+
createTableNameMapper(namespace: string): TableNameMapper;
|
|
18
20
|
get provider(): "sqlite" | "mysql" | "postgresql";
|
|
19
21
|
isConnectionHealthy(): Promise<boolean>;
|
|
20
22
|
getSchemaVersion(namespace: string): Promise<string | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-adapter.d.ts","names":[],"sources":["../../../src/adapters/drizzle/drizzle-adapter.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drizzle-adapter.d.ts","names":[],"sources":["../../../src/adapters/drizzle/drizzle-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;;UAgBiB,aAAA;iCACgB;EADhB,QAAA,EAAA,QAAa,GAAA,OAAA,GACG,YAAO;AAIxC;AAAuD,cAA1C,cAAA,YAA0B,eAAgB,CAAA,gBAAA,CAAA,CAAA;EAKjC,CAAA,OAAA;EAOf,WAAA,CAAA,MAAA,EAPe,aAOf;EAIA,KAJA,mCAAA,GAIA,EAAA,MAAA;EAIU,KAJV,sCAAA,GAIU,EAAA,MAAA;EAAO,KAAA,CAAA,CAAA,EAAP,OAAO,CAAA,IAAA,CAAA;EAYO,qBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAZP,eAYO;EAqBc,IAAA,QAAA,CAAA,CAAA,EAAA,QAAA,GAAA,OAAA,GAAA,YAAA;EAST,mBAAA,CAAA,CAAA,EA9BL,OA8BK,CAAA,OAAA,CAAA;EACxB,gBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAViC,OAUjC,CAAA,MAAA,GAAA,SAAA,CAAA;EAEO,iBAAA,CAAA,gBAHiB,SAGjB,CAAA,CAAA,MAAA,EAFP,OAEO,EAAA,SAAA,EAAA,MAAA,CAAA,EAAd,aAAc,CAAA,OAAA,EAAS,gBAAT,CAAA;EAAS,qBAAA,CAAA,SAAA,EAAA;IAAvB,MAAA,EAiBoB,SAjBpB;IAiBoB,SAAA,EAAA,MAAA;EAEpB,CAAA,EAAA,EAAA,OApFiD,CAoFjD,EAAA;IApFkC,IAAA,CAAA,EAAA,MAAA;EAAe,CAAA,CAAA,EAoFjD,eApFiD"}
|
|
@@ -11,6 +11,7 @@ import { sql } from "drizzle-orm";
|
|
|
11
11
|
var DrizzleAdapter = class {
|
|
12
12
|
#connectionPool;
|
|
13
13
|
#provider;
|
|
14
|
+
#schemaNamespaceMap = /* @__PURE__ */ new WeakMap();
|
|
14
15
|
constructor(config) {
|
|
15
16
|
this.#connectionPool = createDrizzleConnectionPool(config.db);
|
|
16
17
|
this.#provider = config.provider;
|
|
@@ -24,6 +25,9 @@ var DrizzleAdapter = class {
|
|
|
24
25
|
async close() {
|
|
25
26
|
await this.#connectionPool.close();
|
|
26
27
|
}
|
|
28
|
+
createTableNameMapper(namespace) {
|
|
29
|
+
return createTableNameMapper(namespace);
|
|
30
|
+
}
|
|
27
31
|
get provider() {
|
|
28
32
|
return this.#provider;
|
|
29
33
|
}
|
|
@@ -43,8 +47,9 @@ var DrizzleAdapter = class {
|
|
|
43
47
|
return (await createSettingsManager(this.createQueryEngine(settingsSchema, namespace), namespace).get("version"))?.value;
|
|
44
48
|
}
|
|
45
49
|
createQueryEngine(schema, namespace) {
|
|
50
|
+
this.#schemaNamespaceMap.set(schema, namespace);
|
|
46
51
|
const mapper = namespace ? createTableNameMapper(namespace) : void 0;
|
|
47
|
-
return fromDrizzle(schema, this.#connectionPool, this.#provider, mapper);
|
|
52
|
+
return fromDrizzle(schema, this.#connectionPool, this.#provider, mapper, void 0, this.#schemaNamespaceMap);
|
|
48
53
|
}
|
|
49
54
|
createSchemaGenerator(fragments, options) {
|
|
50
55
|
return { generateSchema: (genOptions) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-adapter.js","names":["#connectionPool","#provider"],"sources":["../../../src/adapters/drizzle/drizzle-adapter.ts"],"sourcesContent":["import type { DatabaseAdapter } from \"../adapters\";\nimport { type AnySchema } from \"../../schema/create\";\nimport type { AbstractQuery } from \"../../query/query\";\nimport type { SchemaGenerator } from \"../../schema-generator/schema-generator\";\nimport { generateSchema } from \"./generate\";\nimport { fromDrizzle, type DrizzleUOWConfig } from \"./drizzle-query\";\nimport { createTableNameMapper, type DBType, type DrizzleResult } from \"./shared\";\nimport { createSettingsManager, settingsSchema } from \"../../shared/settings-schema\";\nimport { sql } from \"drizzle-orm\";\nimport {\n fragnoDatabaseAdapterNameFakeSymbol,\n fragnoDatabaseAdapterVersionFakeSymbol,\n} from \"../adapters\";\nimport type { ConnectionPool } from \"../../shared/connection-pool\";\nimport { createDrizzleConnectionPool } from \"./drizzle-connection-pool\";\n\nexport interface DrizzleConfig {\n db: unknown | (() => unknown | Promise<unknown>);\n provider: \"sqlite\" | \"mysql\" | \"postgresql\";\n}\n\nexport class DrizzleAdapter implements DatabaseAdapter<DrizzleUOWConfig> {\n #connectionPool: ConnectionPool<DBType>;\n #provider: \"sqlite\" | \"mysql\" | \"postgresql\";\n\n constructor(config: DrizzleConfig) {\n this.#connectionPool = createDrizzleConnectionPool(\n config.db as DBType | (() => DBType | Promise<DBType>),\n );\n this.#provider = config.provider;\n }\n\n get [fragnoDatabaseAdapterNameFakeSymbol](): string {\n return \"drizzle\";\n }\n\n get [fragnoDatabaseAdapterVersionFakeSymbol](): number {\n return 0;\n }\n\n async close(): Promise<void> {\n await this.#connectionPool.close();\n }\n\n get provider(): \"sqlite\" | \"mysql\" | \"postgresql\" {\n return this.#provider;\n }\n\n async isConnectionHealthy(): Promise<boolean> {\n const conn = await this.#connectionPool.connect();\n try {\n const result = await conn.db.execute(sql`SELECT 1 as healthy`);\n\n // Handle different result formats across providers\n // PostgreSQL/MySQL: { rows: [...] }\n // SQLite: array directly or { rows: [...] }\n if (Array.isArray(result)) {\n return result.length > 0 && result[0][\"healthy\"] === 1;\n } else {\n const drizzleResult = result as DrizzleResult;\n return drizzleResult.rows[0][\"healthy\"] === 1;\n }\n } catch {\n return false;\n } finally {\n await conn.release();\n }\n }\n\n async getSchemaVersion(namespace: string): Promise<string | undefined> {\n const queryEngine = this.createQueryEngine(settingsSchema, namespace);\n const manager = createSettingsManager(queryEngine, namespace);\n\n // Try to read the version key directly\n const result = await manager.get(\"version\");\n return result?.value;\n }\n\n createQueryEngine<TSchema extends AnySchema>(\n schema: TSchema,\n namespace: string,\n ): AbstractQuery<TSchema, DrizzleUOWConfig> {\n // Only create mapper if namespace is non-empty\n const mapper = namespace ? createTableNameMapper(namespace) : undefined;\n return fromDrizzle(schema
|
|
1
|
+
{"version":3,"file":"drizzle-adapter.js","names":["#connectionPool","#provider","#schemaNamespaceMap"],"sources":["../../../src/adapters/drizzle/drizzle-adapter.ts"],"sourcesContent":["import type { DatabaseAdapter } from \"../adapters\";\nimport { type AnySchema } from \"../../schema/create\";\nimport type { AbstractQuery } from \"../../query/query\";\nimport type { SchemaGenerator } from \"../../schema-generator/schema-generator\";\nimport { generateSchema } from \"./generate\";\nimport { fromDrizzle, type DrizzleUOWConfig } from \"./drizzle-query\";\nimport { createTableNameMapper, type DBType, type DrizzleResult } from \"./shared\";\nimport { createSettingsManager, settingsSchema } from \"../../shared/settings-schema\";\nimport { sql } from \"drizzle-orm\";\nimport {\n fragnoDatabaseAdapterNameFakeSymbol,\n fragnoDatabaseAdapterVersionFakeSymbol,\n} from \"../adapters\";\nimport type { ConnectionPool } from \"../../shared/connection-pool\";\nimport { createDrizzleConnectionPool } from \"./drizzle-connection-pool\";\n\nexport interface DrizzleConfig {\n db: unknown | (() => unknown | Promise<unknown>);\n provider: \"sqlite\" | \"mysql\" | \"postgresql\";\n}\n\nexport class DrizzleAdapter implements DatabaseAdapter<DrizzleUOWConfig> {\n #connectionPool: ConnectionPool<DBType>;\n #provider: \"sqlite\" | \"mysql\" | \"postgresql\";\n #schemaNamespaceMap = new WeakMap<AnySchema, string>();\n\n constructor(config: DrizzleConfig) {\n this.#connectionPool = createDrizzleConnectionPool(\n config.db as DBType | (() => DBType | Promise<DBType>),\n );\n this.#provider = config.provider;\n }\n\n get [fragnoDatabaseAdapterNameFakeSymbol](): string {\n return \"drizzle\";\n }\n\n get [fragnoDatabaseAdapterVersionFakeSymbol](): number {\n return 0;\n }\n\n async close(): Promise<void> {\n await this.#connectionPool.close();\n }\n\n createTableNameMapper(namespace: string) {\n return createTableNameMapper(namespace);\n }\n\n get provider(): \"sqlite\" | \"mysql\" | \"postgresql\" {\n return this.#provider;\n }\n\n async isConnectionHealthy(): Promise<boolean> {\n const conn = await this.#connectionPool.connect();\n try {\n const result = await conn.db.execute(sql`SELECT 1 as healthy`);\n\n // Handle different result formats across providers\n // PostgreSQL/MySQL: { rows: [...] }\n // SQLite: array directly or { rows: [...] }\n if (Array.isArray(result)) {\n return result.length > 0 && result[0][\"healthy\"] === 1;\n } else {\n const drizzleResult = result as DrizzleResult;\n return drizzleResult.rows[0][\"healthy\"] === 1;\n }\n } catch {\n return false;\n } finally {\n await conn.release();\n }\n }\n\n async getSchemaVersion(namespace: string): Promise<string | undefined> {\n const queryEngine = this.createQueryEngine(settingsSchema, namespace);\n const manager = createSettingsManager(queryEngine, namespace);\n\n // Try to read the version key directly\n const result = await manager.get(\"version\");\n return result?.value;\n }\n\n createQueryEngine<TSchema extends AnySchema>(\n schema: TSchema,\n namespace: string,\n ): AbstractQuery<TSchema, DrizzleUOWConfig> {\n // Register schema-namespace mapping\n this.#schemaNamespaceMap.set(schema, namespace);\n\n // Only create mapper if namespace is non-empty\n const mapper = namespace ? createTableNameMapper(namespace) : undefined;\n return fromDrizzle(\n schema,\n this.#connectionPool,\n this.#provider,\n mapper,\n undefined,\n this.#schemaNamespaceMap,\n );\n }\n\n createSchemaGenerator(\n fragments: { schema: AnySchema; namespace: string }[],\n options?: { path?: string },\n ): SchemaGenerator {\n return {\n generateSchema: (genOptions) => {\n const path = genOptions?.path ?? options?.path ?? \"fragno-schema.ts\";\n\n return {\n schema: generateSchema(fragments, this.#provider),\n path,\n };\n },\n };\n }\n}\n"],"mappings":";;;;;;;;;;AAqBA,IAAa,iBAAb,MAAyE;CACvE;CACA;CACA,sCAAsB,IAAI,SAA4B;CAEtD,YAAY,QAAuB;AACjC,QAAKA,iBAAkB,4BACrB,OAAO,GACR;AACD,QAAKC,WAAY,OAAO;;CAG1B,KAAK,uCAA+C;AAClD,SAAO;;CAGT,KAAK,0CAAkD;AACrD,SAAO;;CAGT,MAAM,QAAuB;AAC3B,QAAM,MAAKD,eAAgB,OAAO;;CAGpC,sBAAsB,WAAmB;AACvC,SAAO,sBAAsB,UAAU;;CAGzC,IAAI,WAA8C;AAChD,SAAO,MAAKC;;CAGd,MAAM,sBAAwC;EAC5C,MAAM,OAAO,MAAM,MAAKD,eAAgB,SAAS;AACjD,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,GAAG,QAAQ,GAAG,sBAAsB;AAK9D,OAAI,MAAM,QAAQ,OAAO,CACvB,QAAO,OAAO,SAAS,KAAK,OAAO,GAAG,eAAe;OAGrD,QADsB,OACD,KAAK,GAAG,eAAe;UAExC;AACN,UAAO;YACC;AACR,SAAM,KAAK,SAAS;;;CAIxB,MAAM,iBAAiB,WAAgD;AAMrE,UADe,MAHC,sBADI,KAAK,kBAAkB,gBAAgB,UAAU,EAClB,UAAU,CAGhC,IAAI,UAAU,GAC5B;;CAGjB,kBACE,QACA,WAC0C;AAE1C,QAAKE,mBAAoB,IAAI,QAAQ,UAAU;EAG/C,MAAM,SAAS,YAAY,sBAAsB,UAAU,GAAG;AAC9D,SAAO,YACL,QACA,MAAKF,gBACL,MAAKC,UACL,QACA,QACA,MAAKC,mBACN;;CAGH,sBACE,WACA,SACiB;AACjB,SAAO,EACL,iBAAiB,eAAe;GAC9B,MAAM,OAAO,YAAY,QAAQ,SAAS,QAAQ;AAElD,UAAO;IACL,QAAQ,eAAe,WAAW,MAAKD,SAAU;IACjD;IACD;KAEJ"}
|
|
@@ -40,6 +40,8 @@ var UpdateManySpecialBuilder = class {
|
|
|
40
40
|
* @param pool - Connection pool for acquiring database connections
|
|
41
41
|
* @param provider - SQL provider (sqlite, mysql, postgresql)
|
|
42
42
|
* @param mapper - Optional table name mapper for namespace prefixing
|
|
43
|
+
* @param uowConfig - Optional UOW configuration
|
|
44
|
+
* @param schemaNamespaceMap - Optional WeakMap for schema-to-namespace lookups
|
|
43
45
|
* @returns An AbstractQuery instance for performing database operations
|
|
44
46
|
*
|
|
45
47
|
* @example
|
|
@@ -50,9 +52,9 @@ var UpdateManySpecialBuilder = class {
|
|
|
50
52
|
* const uow = queryEngine.createUnitOfWork('myOperation');
|
|
51
53
|
* ```
|
|
52
54
|
*/
|
|
53
|
-
function fromDrizzle(schema, pool, provider, mapper, uowConfig) {
|
|
55
|
+
function fromDrizzle(schema, pool, provider, mapper, uowConfig, schemaNamespaceMap) {
|
|
54
56
|
function createUOW(opts) {
|
|
55
|
-
const uowCompiler = createDrizzleUOWCompiler(
|
|
57
|
+
const uowCompiler = createDrizzleUOWCompiler(pool, provider, mapper);
|
|
56
58
|
const executor = {
|
|
57
59
|
async executeRetrievalPhase(retrievalBatch) {
|
|
58
60
|
if (opts.config?.dryRun) return retrievalBatch.map(() => ({
|
|
@@ -81,7 +83,7 @@ function fromDrizzle(schema, pool, provider, mapper, uowConfig) {
|
|
|
81
83
|
}
|
|
82
84
|
}
|
|
83
85
|
};
|
|
84
|
-
const decoder = createDrizzleUOWDecoder(
|
|
86
|
+
const decoder = createDrizzleUOWDecoder(provider);
|
|
85
87
|
const { onQuery,...restUowConfig } = opts.config ?? {};
|
|
86
88
|
return new UnitOfWork(schema, uowCompiler, executor, decoder, opts.name, {
|
|
87
89
|
...restUowConfig,
|
|
@@ -89,7 +91,7 @@ function fromDrizzle(schema, pool, provider, mapper, uowConfig) {
|
|
|
89
91
|
const actualQuery = query && typeof query === "object" && "query" in query ? query.query : query;
|
|
90
92
|
opts.config?.onQuery?.(actualQuery);
|
|
91
93
|
}
|
|
92
|
-
});
|
|
94
|
+
}, schemaNamespaceMap);
|
|
93
95
|
}
|
|
94
96
|
return {
|
|
95
97
|
async find(tableName, builderFn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-query.js","names":["#indexName","#condition","#setValues","executor: UOWExecutor<DrizzleCompiledQuery, DrizzleResult>"],"sources":["../../../src/adapters/drizzle/drizzle-query.ts"],"sourcesContent":["import type { AbstractQuery } from \"../../query/query\";\nimport type { AnySchema, AnyTable } from \"../../schema/create\";\nimport type { CompiledMutation, UOWExecutor, ValidIndexName } from \"../../query/unit-of-work\";\nimport { createDrizzleUOWCompiler, type DrizzleCompiledQuery } from \"./drizzle-uow-compiler\";\nimport { executeDrizzleRetrievalPhase, executeDrizzleMutationPhase } from \"./drizzle-uow-executor\";\nimport { UnitOfWork } from \"../../query/unit-of-work\";\nimport { parseDrizzle, type DrizzleResult, type TableNameMapper, type DBType } from \"./shared\";\nimport { createDrizzleUOWDecoder } from \"./drizzle-uow-decoder\";\nimport type { ConnectionPool } from \"../../shared/connection-pool\";\nimport type { TableToUpdateValues } from \"../../query/query\";\nimport type { CursorResult } from \"../../query/cursor\";\n\n/**\n * Configuration options for creating a Drizzle Unit of Work\n */\nexport interface DrizzleUOWConfig {\n /**\n * Optional callback to receive compiled SQL queries for logging/debugging\n * This callback is invoked for each query as it's compiled\n */\n onQuery?: (query: DrizzleCompiledQuery) => void;\n /**\n * If true, the query will not be executed and the query will be returned. Not respected for UOWs\n * since those have to be manually executed.\n */\n dryRun?: boolean;\n}\n\n/**\n * Special builder for updateMany operations that captures configuration\n */\nclass UpdateManySpecialBuilder<TTable extends AnyTable> {\n #indexName?: string;\n #condition?: unknown;\n #setValues?: TableToUpdateValues<TTable>;\n\n whereIndex<TIndexName extends ValidIndexName<TTable>>(\n indexName: TIndexName,\n condition?: unknown,\n ): this {\n this.#indexName = indexName as string;\n this.#condition = condition;\n return this;\n }\n\n set(values: TableToUpdateValues<TTable>): this {\n this.#setValues = values;\n return this;\n }\n\n getConfig() {\n return {\n indexName: this.#indexName,\n condition: this.#condition,\n setValues: this.#setValues,\n };\n }\n}\n\n/**\n * Creates a Drizzle-based query engine for the given schema.\n *\n * This is the main entry point for creating a database query interface using Drizzle.\n * It uses a compiler-based architecture where queries are compiled to SQL and then executed,\n * enabling features like SQL snapshot testing.\n *\n * @param schema - The database schema definition\n * @param pool - Connection pool for acquiring database connections\n * @param provider - SQL provider (sqlite, mysql, postgresql)\n * @param mapper - Optional table name mapper for namespace prefixing\n * @returns An AbstractQuery instance for performing database operations\n *\n * @example\n * ```ts\n * const pool = createSimpleConnectionPool(drizzle);\n * const queryEngine = fromDrizzle(mySchema, pool, 'postgresql');\n *\n * const uow = queryEngine.createUnitOfWork('myOperation');\n * ```\n */\nexport function fromDrizzle<T extends AnySchema>(\n schema: T,\n pool: ConnectionPool<DBType>,\n provider: \"sqlite\" | \"mysql\" | \"postgresql\",\n mapper?: TableNameMapper,\n uowConfig?: DrizzleUOWConfig,\n): AbstractQuery<T, DrizzleUOWConfig> {\n function createUOW(opts: { name?: string; config?: DrizzleUOWConfig }) {\n const uowCompiler = createDrizzleUOWCompiler(schema, pool, provider, mapper);\n\n const executor: UOWExecutor<DrizzleCompiledQuery, DrizzleResult> = {\n async executeRetrievalPhase(retrievalBatch: DrizzleCompiledQuery[]) {\n // In dryRun mode, skip execution and return empty results\n if (opts.config?.dryRun) {\n return retrievalBatch.map(() => ({\n rows: [],\n affectedRows: 0,\n }));\n }\n\n const conn = await pool.connect();\n try {\n const db = parseDrizzle(conn.db)[0];\n return await executeDrizzleRetrievalPhase(db, retrievalBatch, provider);\n } finally {\n await conn.release();\n }\n },\n async executeMutationPhase(mutationBatch: CompiledMutation<DrizzleCompiledQuery>[]) {\n // In dryRun mode, skip execution and return success with mock internal IDs\n if (opts.config?.dryRun) {\n return {\n success: true,\n createdInternalIds: mutationBatch.map(() => null),\n };\n }\n\n const conn = await pool.connect();\n try {\n const db = parseDrizzle(conn.db)[0];\n return await executeDrizzleMutationPhase(db, mutationBatch, provider);\n } finally {\n await conn.release();\n }\n },\n };\n\n const decoder = createDrizzleUOWDecoder(schema, provider);\n\n const { onQuery, ...restUowConfig } = opts.config ?? {};\n\n return new UnitOfWork(schema, uowCompiler, executor, decoder, opts.name, {\n ...restUowConfig,\n onQuery: (query) => {\n // Handle both CompiledQuery and CompiledMutation structures\n // Retrieval operations return DrizzleCompiledQuery directly: { sql, params }\n // Mutation operations return CompiledMutation: { query: DrizzleCompiledQuery, expectedAffectedRows }\n const actualQuery =\n query && typeof query === \"object\" && \"query\" in query\n ? (query as CompiledMutation<DrizzleCompiledQuery>).query\n : (query as DrizzleCompiledQuery);\n\n opts.config?.onQuery?.(actualQuery);\n },\n });\n }\n\n return {\n async find(tableName, builderFn) {\n // Safe: builderFn returns a FindBuilder (or void), which matches UnitOfWork signature\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const uow = createUOW({ config: uowConfig }).find(tableName, builderFn as any);\n const [result] = await uow.executeRetrieve();\n return result;\n },\n\n async findWithCursor(tableName, builderFn) {\n // Safe: builderFn returns a FindBuilder, which matches UnitOfWork signature\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const uow = createUOW({ config: uowConfig }).findWithCursor(tableName, builderFn as any);\n const [result] = await uow.executeRetrieve();\n return result as CursorResult<unknown>;\n },\n\n async findFirst(tableName, builderFn) {\n const uow = createUOW({ config: uowConfig });\n if (builderFn) {\n uow.find(tableName, (b) => {\n builderFn(b);\n return b.pageSize(1);\n });\n } else {\n uow.find(tableName, (b) => b.whereIndex(\"primary\").pageSize(1));\n }\n // executeRetrieve runs an array of `find` operation results, which each return an array of rows\n const [result]: unknown[][] = await uow.executeRetrieve();\n return result?.[0] ?? null;\n },\n\n async create(tableName, values) {\n const uow = createUOW({ config: uowConfig });\n uow.create(tableName, values);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to create record\");\n }\n\n const createdIds = uow.getCreatedIds();\n const createdId = createdIds[0];\n if (!createdId) {\n throw new Error(\"Failed to get created ID\");\n }\n return createdId;\n },\n\n async createMany(tableName, valuesArray) {\n const uow = createUOW({ config: uowConfig });\n for (const values of valuesArray) {\n uow.create(tableName, values);\n }\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to create records\");\n }\n\n return uow.getCreatedIds();\n },\n\n async update(tableName, id, builderFn) {\n const uow = createUOW({ config: uowConfig });\n uow.update(tableName, id, builderFn);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update record (version conflict or record not found)\");\n }\n },\n\n async updateMany(tableName, builderFn) {\n const table = schema.tables[tableName];\n if (!table) {\n throw new Error(`Table ${tableName} not found in schema`);\n }\n\n const specialBuilder = new UpdateManySpecialBuilder<typeof table>();\n builderFn(specialBuilder);\n\n const { indexName, condition, setValues } = specialBuilder.getConfig();\n\n if (!indexName) {\n throw new Error(\"whereIndex() must be called in updateMany\");\n }\n if (!setValues) {\n throw new Error(\"set() must be called in updateMany\");\n }\n\n const findUow = createUOW({ config: uowConfig });\n findUow.find(tableName, (b) => {\n if (condition) {\n // Safe: condition is captured from whereIndex call with proper typing\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return b.whereIndex(indexName as ValidIndexName<typeof table>, condition as any);\n }\n return b.whereIndex(indexName as ValidIndexName<typeof table>);\n });\n const [records]: unknown[][] = await findUow.executeRetrieve();\n\n if (!records || records.length === 0) {\n return;\n }\n\n const updateUow = createUOW({ config: uowConfig });\n for (const record of records as Array<{ id: unknown }>) {\n updateUow.update(tableName, record.id as string, (b) => b.set(setValues));\n }\n const { success } = await updateUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update records (version conflict)\");\n }\n },\n\n async delete(tableName, id, builderFn) {\n const uow = createUOW({ config: uowConfig });\n uow.delete(tableName, id, builderFn);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete record (version conflict or record not found)\");\n }\n },\n\n async deleteMany(tableName, builderFn) {\n const findUow = createUOW({ config: uowConfig });\n findUow.find(tableName, builderFn);\n const [records]: unknown[][] = await findUow.executeRetrieve();\n\n if (!records || records.length === 0) {\n return;\n }\n\n const deleteUow = createUOW({ config: uowConfig });\n for (const record of records as Array<{ id: unknown }>) {\n deleteUow.delete(tableName, record.id as string);\n }\n const { success } = await deleteUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete records (version conflict)\");\n }\n },\n\n createUnitOfWork(name, nestedUowConfig) {\n return createUOW({\n name,\n config: {\n ...uowConfig,\n ...nestedUowConfig,\n },\n });\n },\n } as AbstractQuery<T, DrizzleUOWConfig>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"drizzle-query.js","names":["#indexName","#condition","#setValues","executor: UOWExecutor<DrizzleCompiledQuery, DrizzleResult>"],"sources":["../../../src/adapters/drizzle/drizzle-query.ts"],"sourcesContent":["import type { AbstractQuery } from \"../../query/query\";\nimport type { AnySchema, AnyTable } from \"../../schema/create\";\nimport type { CompiledMutation, UOWExecutor, ValidIndexName } from \"../../query/unit-of-work\";\nimport { createDrizzleUOWCompiler, type DrizzleCompiledQuery } from \"./drizzle-uow-compiler\";\nimport { executeDrizzleRetrievalPhase, executeDrizzleMutationPhase } from \"./drizzle-uow-executor\";\nimport { UnitOfWork } from \"../../query/unit-of-work\";\nimport { parseDrizzle, type DrizzleResult, type TableNameMapper, type DBType } from \"./shared\";\nimport { createDrizzleUOWDecoder } from \"./drizzle-uow-decoder\";\nimport type { ConnectionPool } from \"../../shared/connection-pool\";\nimport type { TableToUpdateValues } from \"../../query/query\";\nimport type { CursorResult } from \"../../query/cursor\";\n\n/**\n * Configuration options for creating a Drizzle Unit of Work\n */\nexport interface DrizzleUOWConfig {\n /**\n * Optional callback to receive compiled SQL queries for logging/debugging\n * This callback is invoked for each query as it's compiled\n */\n onQuery?: (query: DrizzleCompiledQuery) => void;\n /**\n * If true, the query will not be executed and the query will be returned. Not respected for UOWs\n * since those have to be manually executed.\n */\n dryRun?: boolean;\n}\n\n/**\n * Special builder for updateMany operations that captures configuration\n */\nclass UpdateManySpecialBuilder<TTable extends AnyTable> {\n #indexName?: string;\n #condition?: unknown;\n #setValues?: TableToUpdateValues<TTable>;\n\n whereIndex<TIndexName extends ValidIndexName<TTable>>(\n indexName: TIndexName,\n condition?: unknown,\n ): this {\n this.#indexName = indexName as string;\n this.#condition = condition;\n return this;\n }\n\n set(values: TableToUpdateValues<TTable>): this {\n this.#setValues = values;\n return this;\n }\n\n getConfig() {\n return {\n indexName: this.#indexName,\n condition: this.#condition,\n setValues: this.#setValues,\n };\n }\n}\n\n/**\n * Creates a Drizzle-based query engine for the given schema.\n *\n * This is the main entry point for creating a database query interface using Drizzle.\n * It uses a compiler-based architecture where queries are compiled to SQL and then executed,\n * enabling features like SQL snapshot testing.\n *\n * @param schema - The database schema definition\n * @param pool - Connection pool for acquiring database connections\n * @param provider - SQL provider (sqlite, mysql, postgresql)\n * @param mapper - Optional table name mapper for namespace prefixing\n * @param uowConfig - Optional UOW configuration\n * @param schemaNamespaceMap - Optional WeakMap for schema-to-namespace lookups\n * @returns An AbstractQuery instance for performing database operations\n *\n * @example\n * ```ts\n * const pool = createSimpleConnectionPool(drizzle);\n * const queryEngine = fromDrizzle(mySchema, pool, 'postgresql');\n *\n * const uow = queryEngine.createUnitOfWork('myOperation');\n * ```\n */\nexport function fromDrizzle<T extends AnySchema>(\n schema: T,\n pool: ConnectionPool<DBType>,\n provider: \"sqlite\" | \"mysql\" | \"postgresql\",\n mapper?: TableNameMapper,\n uowConfig?: DrizzleUOWConfig,\n schemaNamespaceMap?: WeakMap<AnySchema, string>,\n): AbstractQuery<T, DrizzleUOWConfig> {\n function createUOW(opts: { name?: string; config?: DrizzleUOWConfig }) {\n const uowCompiler = createDrizzleUOWCompiler(pool, provider, mapper);\n\n const executor: UOWExecutor<DrizzleCompiledQuery, DrizzleResult> = {\n async executeRetrievalPhase(retrievalBatch: DrizzleCompiledQuery[]) {\n // In dryRun mode, skip execution and return empty results\n if (opts.config?.dryRun) {\n return retrievalBatch.map(() => ({\n rows: [],\n affectedRows: 0,\n }));\n }\n\n const conn = await pool.connect();\n try {\n const db = parseDrizzle(conn.db)[0];\n return await executeDrizzleRetrievalPhase(db, retrievalBatch, provider);\n } finally {\n await conn.release();\n }\n },\n async executeMutationPhase(mutationBatch: CompiledMutation<DrizzleCompiledQuery>[]) {\n // In dryRun mode, skip execution and return success with mock internal IDs\n if (opts.config?.dryRun) {\n return {\n success: true,\n createdInternalIds: mutationBatch.map(() => null),\n };\n }\n\n const conn = await pool.connect();\n try {\n const db = parseDrizzle(conn.db)[0];\n return await executeDrizzleMutationPhase(db, mutationBatch, provider);\n } finally {\n await conn.release();\n }\n },\n };\n\n const decoder = createDrizzleUOWDecoder(provider);\n\n const { onQuery, ...restUowConfig } = opts.config ?? {};\n\n return new UnitOfWork(\n schema,\n uowCompiler,\n executor,\n decoder,\n opts.name,\n {\n ...restUowConfig,\n onQuery: (query) => {\n // Handle both CompiledQuery and CompiledMutation structures\n // Retrieval operations return DrizzleCompiledQuery directly: { sql, params }\n // Mutation operations return CompiledMutation: { query: DrizzleCompiledQuery, expectedAffectedRows }\n const actualQuery =\n query && typeof query === \"object\" && \"query\" in query\n ? (query as CompiledMutation<DrizzleCompiledQuery>).query\n : (query as DrizzleCompiledQuery);\n\n opts.config?.onQuery?.(actualQuery);\n },\n },\n schemaNamespaceMap,\n );\n }\n\n return {\n async find(tableName, builderFn) {\n // Safe: builderFn returns a FindBuilder (or void), which matches UnitOfWork signature\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const uow = createUOW({ config: uowConfig }).find(tableName, builderFn as any);\n const [result] = await uow.executeRetrieve();\n return result;\n },\n\n async findWithCursor(tableName, builderFn) {\n // Safe: builderFn returns a FindBuilder, which matches UnitOfWork signature\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const uow = createUOW({ config: uowConfig }).findWithCursor(tableName, builderFn as any);\n const [result] = await uow.executeRetrieve();\n return result as CursorResult<unknown>;\n },\n\n async findFirst(tableName, builderFn) {\n const uow = createUOW({ config: uowConfig });\n if (builderFn) {\n uow.find(tableName, (b) => {\n builderFn(b);\n return b.pageSize(1);\n });\n } else {\n uow.find(tableName, (b) => b.whereIndex(\"primary\").pageSize(1));\n }\n // executeRetrieve runs an array of `find` operation results, which each return an array of rows\n const [result]: unknown[][] = await uow.executeRetrieve();\n return result?.[0] ?? null;\n },\n\n async create(tableName, values) {\n const uow = createUOW({ config: uowConfig });\n uow.create(tableName, values);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to create record\");\n }\n\n const createdIds = uow.getCreatedIds();\n const createdId = createdIds[0];\n if (!createdId) {\n throw new Error(\"Failed to get created ID\");\n }\n return createdId;\n },\n\n async createMany(tableName, valuesArray) {\n const uow = createUOW({ config: uowConfig });\n for (const values of valuesArray) {\n uow.create(tableName, values);\n }\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to create records\");\n }\n\n return uow.getCreatedIds();\n },\n\n async update(tableName, id, builderFn) {\n const uow = createUOW({ config: uowConfig });\n uow.update(tableName, id, builderFn);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update record (version conflict or record not found)\");\n }\n },\n\n async updateMany(tableName, builderFn) {\n const table = schema.tables[tableName];\n if (!table) {\n throw new Error(`Table ${tableName} not found in schema`);\n }\n\n const specialBuilder = new UpdateManySpecialBuilder<typeof table>();\n builderFn(specialBuilder);\n\n const { indexName, condition, setValues } = specialBuilder.getConfig();\n\n if (!indexName) {\n throw new Error(\"whereIndex() must be called in updateMany\");\n }\n if (!setValues) {\n throw new Error(\"set() must be called in updateMany\");\n }\n\n const findUow = createUOW({ config: uowConfig });\n findUow.find(tableName, (b) => {\n if (condition) {\n // Safe: condition is captured from whereIndex call with proper typing\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return b.whereIndex(indexName as ValidIndexName<typeof table>, condition as any);\n }\n return b.whereIndex(indexName as ValidIndexName<typeof table>);\n });\n const [records]: unknown[][] = await findUow.executeRetrieve();\n\n if (!records || records.length === 0) {\n return;\n }\n\n const updateUow = createUOW({ config: uowConfig });\n for (const record of records as Array<{ id: unknown }>) {\n updateUow.update(tableName, record.id as string, (b) => b.set(setValues));\n }\n const { success } = await updateUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update records (version conflict)\");\n }\n },\n\n async delete(tableName, id, builderFn) {\n const uow = createUOW({ config: uowConfig });\n uow.delete(tableName, id, builderFn);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete record (version conflict or record not found)\");\n }\n },\n\n async deleteMany(tableName, builderFn) {\n const findUow = createUOW({ config: uowConfig });\n findUow.find(tableName, builderFn);\n const [records]: unknown[][] = await findUow.executeRetrieve();\n\n if (!records || records.length === 0) {\n return;\n }\n\n const deleteUow = createUOW({ config: uowConfig });\n for (const record of records as Array<{ id: unknown }>) {\n deleteUow.delete(tableName, record.id as string);\n }\n const { success } = await deleteUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete records (version conflict)\");\n }\n },\n\n createUnitOfWork(name, nestedUowConfig) {\n return createUOW({\n name,\n config: {\n ...uowConfig,\n ...nestedUowConfig,\n },\n });\n },\n } as AbstractQuery<T, DrizzleUOWConfig>;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-uow-compiler.d.ts","names":[],"sources":["../../../src/adapters/drizzle/drizzle-uow-compiler.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drizzle-uow-compiler.d.ts","names":[],"sources":["../../../src/adapters/drizzle/drizzle-uow-compiler.ts"],"sourcesContent":[],"mappings":";;;AAyBY,KAAA,oBAAA,GAAoB"}
|