@shivaedev/effect-prisma 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +25 -7
- package/dist/database.d.ts +6 -6
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +9 -2
- package/dist/database.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/database-factory.d.ts +20 -22
- package/dist/internal/database-factory.d.ts.map +1 -1
- package/dist/internal/database-factory.js +83 -24
- package/dist/internal/database-factory.js.map +1 -1
- package/dist/internal/executor.d.ts +9 -7
- package/dist/internal/executor.d.ts.map +1 -1
- package/dist/internal/query-execution.d.ts +3 -4
- package/dist/internal/query-execution.d.ts.map +1 -1
- package/dist/internal/query-execution.js +9 -3
- package/dist/internal/query-execution.js.map +1 -1
- package/dist/internal/recipe.d.ts +1 -1
- package/dist/internal/recipe.d.ts.map +1 -1
- package/dist/internal/recipe.js +22 -9
- package/dist/internal/recipe.js.map +1 -1
- package/dist/internal/relation-plan.d.ts +6 -1
- package/dist/internal/relation-plan.d.ts.map +1 -1
- package/dist/internal/relation-plan.js +6 -5
- package/dist/internal/relation-plan.js.map +1 -1
- package/dist/internal/relation-runtime.d.ts +4 -3
- package/dist/internal/relation-runtime.d.ts.map +1 -1
- package/dist/internal/relation-runtime.js +38 -19
- package/dist/internal/relation-runtime.js.map +1 -1
- package/dist/internal/relation-stream.d.ts +3 -4
- package/dist/internal/relation-stream.d.ts.map +1 -1
- package/dist/internal/relation-stream.js +23 -21
- package/dist/internal/relation-stream.js.map +1 -1
- package/dist/internal/testing.d.ts +5 -5
- package/dist/internal/testing.d.ts.map +1 -1
- package/dist/internal/testing.js.map +1 -1
- package/dist/internal/transaction.d.ts +6 -3
- package/dist/internal/transaction.d.ts.map +1 -1
- package/dist/internal/transaction.js +14 -4
- package/dist/internal/transaction.js.map +1 -1
- package/dist/internal/vitest-database.d.ts +2 -2
- package/dist/internal/vitest-database.d.ts.map +1 -1
- package/dist/internal/vitest-database.js.map +1 -1
- package/dist/relation/include.d.ts +10 -8
- package/dist/relation/include.d.ts.map +1 -1
- package/dist/relation/prisma-methods.d.ts +20 -20
- package/dist/relation/prisma-methods.d.ts.map +1 -1
- package/dist/relation.d.ts +8 -7
- package/dist/relation.d.ts.map +1 -1
- package/dist/sqlite.d.ts +6 -6
- package/dist/sqlite.d.ts.map +1 -1
- package/dist/sqlite.js +10 -2
- package/dist/sqlite.js.map +1 -1
- package/dist/testing/transaction.d.ts +3 -3
- package/dist/testing/transaction.d.ts.map +1 -1
- package/dist/testing/transaction.js.map +1 -1
- package/dist/testing/types.d.ts +1 -1
- package/dist/testing/types.d.ts.map +1 -1
- package/dist/testing/vitest.d.ts +3 -3
- package/dist/testing/vitest.d.ts.map +1 -1
- package/dist/testing/vitest.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js.map +1 -1
- package/package.json +1 -1
- package/src/database.ts +53 -47
- package/src/index.ts +0 -1
- package/src/internal/database-factory.ts +221 -98
- package/src/internal/executor.ts +9 -15
- package/src/internal/query-execution.ts +14 -6
- package/src/internal/recipe.ts +46 -7
- package/src/internal/relation-plan.ts +11 -11
- package/src/internal/relation-runtime.ts +67 -65
- package/src/internal/relation-stream.ts +54 -48
- package/src/internal/testing.ts +8 -8
- package/src/internal/transaction.ts +80 -56
- package/src/internal/vitest-database.ts +3 -12
- package/src/relation/include.ts +31 -22
- package/src/relation/prisma-methods.ts +27 -31
- package/src/relation.ts +19 -27
- package/src/sqlite.ts +61 -54
- package/src/testing/transaction.ts +16 -6
- package/src/testing/types.ts +1 -1
- package/src/testing/vitest.ts +3 -10
- package/src/testing.ts +0 -1
package/dist/internal/recipe.js
CHANGED
|
@@ -28,23 +28,33 @@ const applyMethod = (current, name, arguments_, model) => {
|
|
|
28
28
|
const method = Reflect.get(current, name);
|
|
29
29
|
return Reflect.apply(method, current, arguments_);
|
|
30
30
|
};
|
|
31
|
-
const replayPlan = (collection, plan) => {
|
|
31
|
+
const replayPlan = (collection, plan, owner, transactionIdentity) => {
|
|
32
|
+
if (!plan.liveness.open) {
|
|
33
|
+
throw new TypeError("Included Relation is closed");
|
|
34
|
+
}
|
|
35
|
+
if (plan.owner !== owner) {
|
|
36
|
+
throw new TypeError("Included Relations must use the same Database");
|
|
37
|
+
}
|
|
38
|
+
if (plan.transactionIdentity !== undefined &&
|
|
39
|
+
plan.transactionIdentity !== transactionIdentity) {
|
|
40
|
+
throw new TypeError("Included Relation belongs to another transaction");
|
|
41
|
+
}
|
|
32
42
|
const relatedModel = typeof collection === "object" && collection !== null
|
|
33
43
|
? Reflect.get(collection, "modelName")
|
|
34
44
|
: undefined;
|
|
35
45
|
if (typeof relatedModel === "string" && relatedModel !== plan.recipe.model) {
|
|
36
46
|
throw new TypeError(`Included relation expects ${relatedModel}, received ${plan.recipe.model}`);
|
|
37
47
|
}
|
|
38
|
-
const refined = replayRecipeFrom(collection, plan.recipe);
|
|
48
|
+
const refined = replayRecipeFrom(collection, plan.recipe, owner, transactionIdentity);
|
|
39
49
|
if (plan.terminal !== "count") {
|
|
40
50
|
return refined;
|
|
41
51
|
}
|
|
42
52
|
return applyMethod(refined, "count", [], plan.recipe.model);
|
|
43
53
|
};
|
|
44
|
-
const includeRefinement = (value) => {
|
|
54
|
+
const includeRefinement = (value, owner, transactionIdentity) => {
|
|
45
55
|
const plan = getRelationPlan(value);
|
|
46
56
|
if (plan !== undefined) {
|
|
47
|
-
return (collection) => replayPlan(collection, plan);
|
|
57
|
+
return (collection) => replayPlan(collection, plan, owner, transactionIdentity);
|
|
48
58
|
}
|
|
49
59
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
50
60
|
throw new TypeError("An included relation must be a Relation or query record");
|
|
@@ -67,26 +77,29 @@ const includeRefinement = (value) => {
|
|
|
67
77
|
return (collection) => {
|
|
68
78
|
const branches = Object.fromEntries(plans.map(([name, queryPlan]) => [
|
|
69
79
|
name,
|
|
70
|
-
replayPlan(collection, queryPlan),
|
|
80
|
+
replayPlan(collection, queryPlan, owner, transactionIdentity),
|
|
71
81
|
]));
|
|
72
82
|
return applyMethod(collection, "combine", [branches], model ?? "relation");
|
|
73
83
|
};
|
|
74
84
|
};
|
|
75
|
-
const replayRecipeFrom = (root, recipe) => {
|
|
85
|
+
const replayRecipeFrom = (root, recipe, owner, transactionIdentity) => {
|
|
76
86
|
let current = root;
|
|
77
87
|
for (const operation of operations(recipe)) {
|
|
78
88
|
const arguments_ = operation.name === "include" && operation.arguments.length === 2
|
|
79
|
-
? [
|
|
89
|
+
? [
|
|
90
|
+
operation.arguments[0],
|
|
91
|
+
includeRefinement(operation.arguments[1], owner, transactionIdentity),
|
|
92
|
+
]
|
|
80
93
|
: operation.arguments;
|
|
81
94
|
current = applyMethod(current, operation.name, arguments_, recipe.model);
|
|
82
95
|
}
|
|
83
96
|
return current;
|
|
84
97
|
};
|
|
85
|
-
export const replayRecipe = (models, recipe) => {
|
|
98
|
+
export const replayRecipe = (models, recipe, owner, transactionIdentity) => {
|
|
86
99
|
const current = Reflect.get(models, recipe.model);
|
|
87
100
|
if (current === undefined) {
|
|
88
101
|
throw new TypeError(`Unknown Prisma model: ${recipe.model}`);
|
|
89
102
|
}
|
|
90
|
-
return replayRecipeFrom(current, recipe);
|
|
103
|
+
return replayRecipeFrom(current, recipe, owner, transactionIdentity);
|
|
91
104
|
};
|
|
92
105
|
//# sourceMappingURL=recipe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/internal/recipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AAaxE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAkB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,MAAsB,EACtB,IAAiB,EACjB,UAAkC,EACjB,EAAE,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,MAAM;IACN,SAAS,EAAE;QACV,IAAI;QACJ,SAAS,EAAE,UAAU;KACrB;CACD,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAClB,MAAsB,EACa,EAAE;IACrC,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,IAAI,OAAO,GAA+B,MAAM,CAAC;IAEjD,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CACnB,OAAgB,EAChB,IAAiB,EACjB,UAAkC,EAClC,KAAa,EACH,EAAE;IACZ,IACC,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,UAAU,EAC/C,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAE5B,CAAC;IACb,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/internal/recipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type { RelationRecipe } from "./recipe.js";
|
|
2
|
-
export declare const RelationPlanTypeId: unique symbol;
|
|
3
2
|
export interface RelationPlan {
|
|
3
|
+
readonly liveness: {
|
|
4
|
+
readonly open: boolean;
|
|
5
|
+
};
|
|
6
|
+
readonly owner: object;
|
|
4
7
|
readonly recipe: RelationRecipe;
|
|
5
8
|
readonly terminal?: PropertyKey;
|
|
9
|
+
readonly transactionIdentity: object | undefined;
|
|
6
10
|
}
|
|
11
|
+
export declare const setRelationPlan: (value: object, plan: RelationPlan) => void;
|
|
7
12
|
export declare const getRelationPlan: (value: unknown) => RelationPlan | undefined;
|
|
8
13
|
//# sourceMappingURL=relation-plan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-plan.d.ts","sourceRoot":"","sources":["../../src/internal/relation-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"relation-plan.d.ts","sourceRoot":"","sources":["../../src/internal/relation-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;CACjD;AAID,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,MAAM,YAAY,KAAG,IAEnE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,YAAY,GAAG,SAK/D,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
const plans = new WeakMap();
|
|
2
|
+
export const setRelationPlan = (value, plan) => {
|
|
3
|
+
plans.set(value, plan);
|
|
4
|
+
};
|
|
2
5
|
export const getRelationPlan = (value) => {
|
|
3
|
-
if (typeof value !== "object" ||
|
|
4
|
-
value === null ||
|
|
5
|
-
!Reflect.has(value, RelationPlanTypeId)) {
|
|
6
|
+
if (typeof value !== "object" || value === null) {
|
|
6
7
|
return undefined;
|
|
7
8
|
}
|
|
8
|
-
return
|
|
9
|
+
return plans.get(value);
|
|
9
10
|
};
|
|
10
11
|
//# sourceMappingURL=relation-plan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-plan.js","sourceRoot":"","sources":["../../src/internal/relation-plan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relation-plan.js","sourceRoot":"","sources":["../../src/internal/relation-plan.ts"],"names":[],"mappings":"AAUA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAwB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,IAAkB,EAAQ,EAAE;IAC1E,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAA4B,EAAE;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { PrismaError } from "../error.js";
|
|
2
3
|
import type { Relation } from "../relation.js";
|
|
3
|
-
import type { AnyPostgresContract, DatabaseExecutor
|
|
4
|
-
export declare const makeModelRelation: <Collection, Models extends object,
|
|
4
|
+
import type { AnyPostgresContract, DatabaseExecutor } from "./executor.js";
|
|
5
|
+
export declare const makeModelRelation: <Collection, Models extends object, ExecutorContract extends AnyPostgresContract = AnyPostgresContract, Model extends string = string>(executor: DatabaseExecutor<Models, ExecutorContract>, model: Model, resolveExecutor?: Effect.Effect<DatabaseExecutor<Models, ExecutorContract>, PrismaError>) => Relation<Collection, undefined, Model>;
|
|
5
6
|
//# sourceMappingURL=relation-runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-runtime.d.ts","sourceRoot":"","sources":["../../src/internal/relation-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"relation-runtime.d.ts","sourceRoot":"","sources":["../../src/internal/relation-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmC,MAAM,QAAQ,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA6M3E,eAAO,MAAM,iBAAiB,GAC7B,UAAU,EACV,MAAM,SAAS,MAAM,EACrB,gBAAgB,SAAS,mBAAmB,GAAG,mBAAmB,EAClE,KAAK,SAAS,MAAM,GAAG,MAAM,EAE7B,UAAU,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpD,OAAO,KAAK,EACZ,kBAAiB,MAAM,CAAC,MAAM,CAC7B,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC1C,WAAW,CACgB,KAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAKK,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { Effect, Effectable, Option } from "effect";
|
|
|
2
2
|
import { fromPrismaPromise } from "./promise.js";
|
|
3
3
|
import { executeQuery } from "./query-execution.js";
|
|
4
4
|
import { appendOperation, replayRecipe, rootRecipe, } from "./recipe.js";
|
|
5
|
-
import {
|
|
5
|
+
import { setRelationPlan } from "./relation-plan.js";
|
|
6
6
|
import { makeRelationStream } from "./relation-stream.js";
|
|
7
7
|
const evaluateResult = (value, terminal) => {
|
|
8
8
|
if (terminal === "count" &&
|
|
@@ -31,14 +31,25 @@ const evaluateResult = (value, terminal) => {
|
|
|
31
31
|
}
|
|
32
32
|
return Effect.succeed(executable);
|
|
33
33
|
};
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
34
|
+
const runtimes = new WeakMap();
|
|
35
|
+
const runtimeOf = (self) => {
|
|
36
|
+
const runtime = runtimes.get(self);
|
|
37
|
+
if (runtime === undefined) {
|
|
38
|
+
throw new TypeError("Relation runtime is unavailable");
|
|
39
|
+
}
|
|
40
|
+
return runtime;
|
|
41
|
+
};
|
|
42
|
+
const relationEffect = (self) => {
|
|
43
|
+
const runtime = runtimeOf(self);
|
|
44
|
+
return Effect.flatMap(runtime.resolveExecutor, (executor) => executeQuery(executor, Effect.suspend(() => evaluateResult(replayRecipe(executor.models, runtime.recipe, executor.identity, executor.transactionIdentity), runtime.terminal)))).pipe(Effect.withSpan(`prisma.${runtime.recipe.model}.${String(runtime.terminal ?? "all")}`, {
|
|
45
|
+
kind: "client",
|
|
46
|
+
attributes: {
|
|
47
|
+
"db.system": "postgresql",
|
|
48
|
+
"db.model": runtime.recipe.model,
|
|
49
|
+
"db.operation": String(runtime.terminal ?? "all"),
|
|
50
|
+
},
|
|
51
|
+
}));
|
|
52
|
+
};
|
|
42
53
|
const RelationPrototype = {
|
|
43
54
|
...Effectable.Prototype({
|
|
44
55
|
label: "EffectPrismaRelation",
|
|
@@ -48,18 +59,13 @@ const RelationPrototype = {
|
|
|
48
59
|
}),
|
|
49
60
|
get stream() {
|
|
50
61
|
const relation = this;
|
|
51
|
-
|
|
62
|
+
const runtime = runtimeOf(relation);
|
|
63
|
+
return makeRelationStream(runtime.resolveExecutor, runtime.recipe);
|
|
52
64
|
},
|
|
53
65
|
};
|
|
54
66
|
const makeRelationProxy = (runtime) => {
|
|
55
|
-
const target = Object.
|
|
56
|
-
|
|
57
|
-
recipe: runtime.recipe,
|
|
58
|
-
...(runtime.terminal === undefined ? {} : { terminal: runtime.terminal }),
|
|
59
|
-
},
|
|
60
|
-
runtime,
|
|
61
|
-
});
|
|
62
|
-
return new Proxy(target, {
|
|
67
|
+
const target = Object.create(RelationPrototype);
|
|
68
|
+
const proxy = new Proxy(target, {
|
|
63
69
|
get(self, property, receiver) {
|
|
64
70
|
if (property === "then") {
|
|
65
71
|
return undefined;
|
|
@@ -86,9 +92,22 @@ const makeRelationProxy = (runtime) => {
|
|
|
86
92
|
});
|
|
87
93
|
},
|
|
88
94
|
});
|
|
95
|
+
const plan = {
|
|
96
|
+
liveness: runtime.executor.liveness,
|
|
97
|
+
owner: runtime.executor.identity,
|
|
98
|
+
recipe: runtime.recipe,
|
|
99
|
+
...(runtime.terminal === undefined ? {} : { terminal: runtime.terminal }),
|
|
100
|
+
transactionIdentity: runtime.executor.transactionIdentity,
|
|
101
|
+
};
|
|
102
|
+
for (const value of [target, proxy]) {
|
|
103
|
+
runtimes.set(value, runtime);
|
|
104
|
+
setRelationPlan(value, plan);
|
|
105
|
+
}
|
|
106
|
+
return proxy;
|
|
89
107
|
};
|
|
90
|
-
export const makeModelRelation = (executor, model) => makeRelationProxy({
|
|
108
|
+
export const makeModelRelation = (executor, model, resolveExecutor = Effect.succeed(executor)) => makeRelationProxy({
|
|
91
109
|
executor,
|
|
92
110
|
recipe: rootRecipe(model),
|
|
111
|
+
resolveExecutor,
|
|
93
112
|
});
|
|
94
113
|
//# sourceMappingURL=relation-runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-runtime.js","sourceRoot":"","sources":["../../src/internal/relation-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relation-runtime.js","sourceRoot":"","sources":["../../src/internal/relation-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Stream } from "effect";
|
|
1
|
+
import { Effect, Stream } from "effect";
|
|
3
2
|
import { type PrismaError } from "../error.js";
|
|
4
|
-
import type { AnyPostgresContract, DatabaseExecutor
|
|
3
|
+
import type { AnyPostgresContract, DatabaseExecutor } from "./executor.js";
|
|
5
4
|
import { type RelationRecipe } from "./recipe.js";
|
|
6
|
-
export declare const makeRelationStream: <Models extends object, Contract extends AnyPostgresContract>(
|
|
5
|
+
export declare const makeRelationStream: <Models extends object, Contract extends AnyPostgresContract>(resolveExecutor: Effect.Effect<DatabaseExecutor<Models, Contract>, PrismaError>, recipe: RelationRecipe) => Stream.Stream<unknown, PrismaError>;
|
|
7
6
|
//# sourceMappingURL=relation-stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-stream.d.ts","sourceRoot":"","sources":["../../src/internal/relation-stream.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"relation-stream.d.ts","sourceRoot":"","sources":["../../src/internal/relation-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAmB,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG3E,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,aAAa,CAAC;AAIhE,eAAO,MAAM,kBAAkB,GAC9B,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,mBAAmB,EAEpC,iBAAiB,MAAM,CAAC,MAAM,CAC7B,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClC,WAAW,CACX,EACD,QAAQ,cAAc,KACpB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAqDpC,CAAC"}
|
|
@@ -3,26 +3,28 @@ import { isPrismaFailure, toPrismaError } from "../error.js";
|
|
|
3
3
|
import { fromPrismaPromise } from "./promise.js";
|
|
4
4
|
import { executeQuery } from "./query-execution.js";
|
|
5
5
|
import { replayRecipe } from "./recipe.js";
|
|
6
|
-
export const makeRelationStream = (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
collection
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const iterable = Reflect.apply(Reflect.get(collection, "all"), collection, []);
|
|
14
|
-
if (executor.querySemaphore === undefined) {
|
|
15
|
-
return Stream.fromAsyncIterable(iterable, (error) => error).pipe(Stream.catch((error) => isPrismaFailure(error)
|
|
16
|
-
? Stream.fail(toPrismaError(error))
|
|
17
|
-
: Stream.die(error)));
|
|
18
|
-
}
|
|
19
|
-
const buffered = executeQuery(executor, fromPrismaPromise(async () => {
|
|
20
|
-
const rows = [];
|
|
21
|
-
for await (const row of iterable) {
|
|
22
|
-
rows.push(row);
|
|
6
|
+
export const makeRelationStream = (resolveExecutor, recipe) => {
|
|
7
|
+
return Stream.unwrap(Effect.flatMap(resolveExecutor, (executor) => executeQuery(executor, Effect.sync(() => {
|
|
8
|
+
const collection = replayRecipe(executor.models, recipe, executor.identity, executor.transactionIdentity);
|
|
9
|
+
if (typeof collection !== "object" ||
|
|
10
|
+
collection === null ||
|
|
11
|
+
typeof Reflect.get(collection, "all") !== "function") {
|
|
12
|
+
throw new TypeError("Only collection Relations can be streamed");
|
|
23
13
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
14
|
+
const iterable = Reflect.apply(Reflect.get(collection, "all"), collection, []);
|
|
15
|
+
if (executor.querySemaphore === undefined) {
|
|
16
|
+
return Stream.fromAsyncIterable(iterable, (error) => error).pipe(Stream.catch((error) => isPrismaFailure(error)
|
|
17
|
+
? Stream.fail(toPrismaError(error))
|
|
18
|
+
: Stream.die(error)));
|
|
19
|
+
}
|
|
20
|
+
const buffered = executeQuery(executor, fromPrismaPromise(async () => {
|
|
21
|
+
const rows = [];
|
|
22
|
+
for await (const row of iterable) {
|
|
23
|
+
rows.push(row);
|
|
24
|
+
}
|
|
25
|
+
return rows;
|
|
26
|
+
}));
|
|
27
|
+
return Stream.unwrap(Effect.map(buffered, (rows) => Stream.fromIterable(rows)));
|
|
28
|
+
}))));
|
|
29
|
+
};
|
|
28
30
|
//# sourceMappingURL=relation-stream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-stream.js","sourceRoot":"","sources":["../../src/internal/relation-stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relation-stream.js","sourceRoot":"","sources":["../../src/internal/relation-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,eAAe,EAAoB,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAuB,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAIjC,eAGC,EACD,MAAsB,EACgB,EAAE;IACxC,OAAO,MAAM,CAAC,MAAM,CACnB,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5C,YAAY,CACX,QAAQ,EACR,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QAChB,MAAM,UAAU,GAAG,YAAY,CAC9B,QAAQ,CAAC,MAAM,EACf,MAAM,EACN,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,mBAAmB,CAC5B,CAAC;QACF,IACC,OAAO,UAAU,KAAK,QAAQ;YAC9B,UAAU,KAAK,IAAI;YACnB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,UAAU,EACnD,CAAC;YACF,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAgB,EAC7C,UAAU,EACV,EAAE,CACwB,CAAC;QAE5B,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAC/D,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACtB,eAAe,CAAC,KAAK,CAAC;gBACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CACpB,CACD,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAC5B,QAAQ,EACR,iBAAiB,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,GAAmB,EAAE,CAAC;YAChC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CACzD,CAAC;IACH,CAAC,CAAC,CACF,CACD,CACD,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Effect } from "effect";
|
|
2
2
|
import type { PrismaError } from "../error.js";
|
|
3
3
|
export declare const DatabaseTestingTypeId: unique symbol;
|
|
4
|
-
export interface DatabaseTesting<
|
|
5
|
-
readonly withTestTransaction: <A, E, R>(program: Effect.Effect<A, E, R>) => Effect.Effect<A, E | PrismaError,
|
|
4
|
+
export interface DatabaseTesting<DatabaseId> {
|
|
5
|
+
readonly withTestTransaction: <A, E, R>(program: Effect.Effect<A, E, R> & (DatabaseId extends R ? unknown : never)) => Effect.Effect<A, E | PrismaError, DatabaseId | Exclude<R, DatabaseId>>;
|
|
6
6
|
}
|
|
7
|
-
export interface DatabaseWithTesting<
|
|
8
|
-
readonly [DatabaseTestingTypeId]: DatabaseTesting<
|
|
7
|
+
export interface DatabaseWithTesting<DatabaseId> {
|
|
8
|
+
readonly [DatabaseTestingTypeId]: DatabaseTesting<DatabaseId>;
|
|
9
9
|
}
|
|
10
|
-
export declare const getDatabaseTesting: <
|
|
10
|
+
export declare const getDatabaseTesting: <DatabaseId>(database: object) => DatabaseTesting<DatabaseId>;
|
|
11
11
|
//# sourceMappingURL=testing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/internal/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,qBAAqB,EAAE,OAAO,MAE1C,CAAC;AAEF,MAAM,WAAW,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/internal/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,qBAAqB,EAAE,OAAO,MAE1C,CAAC;AAEF,MAAM,WAAW,eAAe,CAAC,UAAU;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,SAAS,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,KACtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,mBAAmB,CAAC,UAAU;IAC9C,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,kBAAkB,GAAI,UAAU,EAC5C,UAAU,MAAM,KACd,eAAe,CAAC,UAAU,CAY5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/internal/testing.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAkB,MAAM,CAAC,GAAG,CAC7D,0CAA0C,CAC1C,CAAC;AAYF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,QAAgB,
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/internal/testing.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAkB,MAAM,CAAC,GAAG,CAC7D,0CAA0C,CAC1C,CAAC;AAYF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,QAAgB,EACc,EAAE;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,CAE/C,CAAC;IAEb,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAClB,uEAAuE,CACvE,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { orm } from "@prisma-next/sql-orm-client";
|
|
2
2
|
import type { RuntimeConnection, RuntimeTransaction } from "@prisma-next/sql-runtime";
|
|
3
|
-
import { Effect, Exit } from "effect";
|
|
3
|
+
import { Effect, Exit, Semaphore } from "effect";
|
|
4
4
|
import type { PrismaError } from "../error.js";
|
|
5
5
|
import type { AnySqlContract, DatabaseExecutor } from "./executor.js";
|
|
6
6
|
export type TransactionOrm<Contract extends AnySqlContract> = ReturnType<typeof orm<Contract>>;
|
|
7
|
+
export declare const withTransactionSemaphore: <A, E, R>(semaphore: Semaphore.Semaphore | undefined, transaction: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
7
8
|
export interface TransactionResource<Models extends object, Contract extends AnySqlContract> {
|
|
8
9
|
readonly connection: RuntimeConnection;
|
|
9
10
|
readonly transaction: RuntimeTransaction;
|
|
10
|
-
readonly executor: DatabaseExecutor<Models, Contract
|
|
11
|
+
readonly executor: DatabaseExecutor<Models, Contract> & {
|
|
12
|
+
readonly querySemaphore: Semaphore.Semaphore;
|
|
13
|
+
};
|
|
11
14
|
}
|
|
12
|
-
export declare const acquireTransaction: <Models extends object, Contract extends AnySqlContract>(current: DatabaseExecutor<Models, Contract>, models: (orm: TransactionOrm<Contract>) => Models) => Effect.Effect<TransactionResource<Models, Contract>, PrismaError>;
|
|
15
|
+
export declare const acquireTransaction: <Models extends object, Contract extends AnySqlContract>(current: DatabaseExecutor<Models, Contract>, models: (orm: TransactionOrm<Contract>) => Models, mode: "test" | "transaction") => Effect.Effect<TransactionResource<Models, Contract>, PrismaError>;
|
|
13
16
|
export declare const releaseTransaction: <Models extends object, Contract extends AnySqlContract, A, E>(resource: TransactionResource<Models, Contract>, exit: Exit.Exit<A, E>) => Effect.Effect<void, PrismaError>;
|
|
14
17
|
export declare const releaseTestTransaction: <Models extends object, Contract extends AnySqlContract, A, E>(resource: TransactionResource<Models, Contract>, exit: Exit.Exit<A, E>) => Effect.Effect<void, PrismaError>;
|
|
15
18
|
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/internal/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/internal/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtE,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,cAAc,IAAI,UAAU,CACvE,OAAO,GAAG,CAAC,QAAQ,CAAC,CACpB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAC/C,WAAW,SAAS,CAAC,SAAS,GAAG,SAAS,EAC1C,aAAa,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACjC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACkD,CAAC;AAE3E,MAAM,WAAW,mBAAmB,CACnC,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,cAAc;IAE/B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG;QACvD,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,SAAS,CAAC;KAC7C,CAAC;CACF;AASD,eAAO,MAAM,kBAAkB,GAC9B,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,cAAc,EAE/B,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC3C,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,MAAM,EACjD,MAAM,MAAM,GAAG,aAAa,KAC1B,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,CAgChE,CAAC;AAEJ,eAAO,MAAM,kBAAkB,GAC9B,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,cAAc,EAC/B,CAAC,EACD,CAAC,EAED,UAAU,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KACnB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAA4C,CAAC;AAE/E,eAAO,MAAM,sBAAsB,GAClC,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,cAAc,EAC/B,CAAC,EACD,CAAC,EAED,UAAU,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KACnB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAA6C,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { orm } from "@prisma-next/sql-orm-client";
|
|
2
2
|
import { Effect, Exit, Semaphore } from "effect";
|
|
3
3
|
import { fromPrismaPromise } from "./promise.js";
|
|
4
|
+
export const withTransactionSemaphore = (semaphore, transaction) => semaphore === undefined ? transaction : semaphore.withPermit(transaction);
|
|
4
5
|
const runtimeFailure = (code, cause, details) => Object.assign(new Error(code, { cause }), { code, ...details });
|
|
5
|
-
export const acquireTransaction = (current, models) => fromPrismaPromise(async () => {
|
|
6
|
+
export const acquireTransaction = (current, models, mode) => fromPrismaPromise(async () => {
|
|
6
7
|
const connection = await current.client.runtime().connection();
|
|
7
8
|
try {
|
|
8
9
|
const transaction = await connection.transaction();
|
|
@@ -15,9 +16,16 @@ export const acquireTransaction = (current, models) => fromPrismaPromise(async (
|
|
|
15
16
|
transaction,
|
|
16
17
|
executor: {
|
|
17
18
|
client: current.client,
|
|
19
|
+
identity: current.identity,
|
|
20
|
+
liveness: {
|
|
21
|
+
closedCode: "RUNTIME.TRANSACTION_CLOSED",
|
|
22
|
+
open: true,
|
|
23
|
+
},
|
|
24
|
+
mode,
|
|
18
25
|
models: models(transactionOrm),
|
|
19
26
|
querySemaphore: Semaphore.makeUnsafe(1),
|
|
20
|
-
|
|
27
|
+
transactionIdentity: {},
|
|
28
|
+
transactionSemaphore: current.transactionSemaphore,
|
|
21
29
|
},
|
|
22
30
|
};
|
|
23
31
|
}
|
|
@@ -28,7 +36,9 @@ export const acquireTransaction = (current, models) => fromPrismaPromise(async (
|
|
|
28
36
|
});
|
|
29
37
|
export const releaseTransaction = (resource, exit) => settleTransaction(resource, exit, true);
|
|
30
38
|
export const releaseTestTransaction = (resource, exit) => settleTransaction(resource, exit, false);
|
|
31
|
-
const settleTransaction = (resource, exit, commitOnSuccess) => Effect.uninterruptible(
|
|
39
|
+
const settleTransaction = (resource, exit, commitOnSuccess) => Effect.uninterruptible(Effect.sync(() => {
|
|
40
|
+
resource.executor.liveness.open = false;
|
|
41
|
+
}).pipe(Effect.andThen(resource.executor.querySemaphore.withPermit(fromPrismaPromise(async () => {
|
|
32
42
|
let disposed = false;
|
|
33
43
|
let failure;
|
|
34
44
|
const destroy = async (reason) => {
|
|
@@ -76,5 +86,5 @@ const settleTransaction = (resource, exit, commitOnSuccess) => Effect.uninterrup
|
|
|
76
86
|
if (failure !== undefined) {
|
|
77
87
|
throw failure;
|
|
78
88
|
}
|
|
79
|
-
}));
|
|
89
|
+
})))));
|
|
80
90
|
//# sourceMappingURL=transaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/internal/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAKlD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/internal/transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TestContext, TestOptions } from "@effect/vitest";
|
|
2
2
|
import { type Context, Effect } from "effect";
|
|
3
|
-
import type { AnyDatabase,
|
|
3
|
+
import type { AnyDatabase, DatabaseTester } from "../testing/types.js";
|
|
4
4
|
export declare const fixtureName = "__effectPrismaContext";
|
|
5
5
|
export type DatabaseFixture<Provided> = TestContext & {
|
|
6
6
|
readonly [fixtureName]: Context.Context<Provided>;
|
|
@@ -14,5 +14,5 @@ export interface FixtureTestApi<Provided> {
|
|
|
14
14
|
readonly fails: FixtureTestApi<Provided>;
|
|
15
15
|
readonly for: <Item>(cases: ReadonlyArray<Item>) => (name: string, options: TestOptions, body: (item: Item, context: DatabaseFixture<Provided>) => Promise<unknown>) => void;
|
|
16
16
|
}
|
|
17
|
-
export declare const makeDatabaseTester: <Database extends AnyDatabase, Provided>(fixtureIt: FixtureTestApi<Provided |
|
|
17
|
+
export declare const makeDatabaseTester: <Database extends AnyDatabase, Provided>(fixtureIt: FixtureTestApi<Provided | Effect.Services<Database>>, database: Database) => DatabaseTester<Database, Provided | Effect.Services<Database>>;
|
|
18
18
|
//# sourceMappingURL=vitest-database.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest-database.d.ts","sourceRoot":"","sources":["../../src/internal/vitest-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AAI9E,OAAO,KAAK,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"vitest-database.d.ts","sourceRoot":"","sources":["../../src/internal/vitest-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AAI9E,OAAO,KAAK,EACX,WAAW,EAGX,cAAc,EACd,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,MAAM,MAAM,eAAe,CAAC,QAAQ,IAAI,WAAW,GAAG;IACrD,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,WAAW,cAAc,CAAC,QAAQ;IACvC,CACC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAC5D,IAAI,CAAC;IACR,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAClB,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KACtB,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KACtE,IAAI,CAAC;CACV;AAwCD,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,WAAW,EAAE,QAAQ,EACxE,WAAW,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAC/D,UAAU,QAAQ,KAChB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAyH/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest-database.js","sourceRoot":"","sources":["../../src/internal/vitest-database.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAc,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,WAAW,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"vitest-database.js","sourceRoot":"","sources":["../../src/internal/vitest-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,22 +4,24 @@ import type { AnyPostgresContract, IncludedRelationValue, IsToManyRelation, Rela
|
|
|
4
4
|
type Simplify<Value> = {
|
|
5
5
|
[Key in keyof Value]: Value[Key];
|
|
6
6
|
};
|
|
7
|
-
type QueryValue<Query> = Query extends RelationQuery<infer Value, infer
|
|
8
|
-
type AcceptRelatedQuery<Query, Contract extends AnyPostgresContract, Model extends string
|
|
7
|
+
type QueryValue<Query> = Query extends RelationQuery<infer Value, infer _Contract, infer _Model, infer _DatabaseId> ? Value : never;
|
|
8
|
+
type AcceptRelatedQuery<Query, Contract extends AnyPostgresContract, Model extends string, DatabaseId> = [Query] extends [
|
|
9
|
+
RelationQuery<infer _Value, infer QueryContract, infer QueryModel, infer QueryDatabaseId>
|
|
10
|
+
] ? [QueryContract] extends [Contract] ? [Contract] extends [QueryContract] ? [QueryDatabaseId] extends [DatabaseId] ? [DatabaseId] extends [QueryDatabaseId] ? QueryModel extends Model ? unknown : never : never : never : never : never : never;
|
|
9
11
|
type IncludedQueryValue<Query, Contract extends AnyPostgresContract, Model extends string, RelationName extends string> = QueryValue<Query> extends ReadonlyArray<infer Row> ? IncludedRelationValue<Contract, Model, RelationName, Row> : QueryValue<Query>;
|
|
10
12
|
type QueryShapeValue<Shape extends Readonly<Record<string, unknown>>> = {
|
|
11
13
|
readonly [Key in keyof Shape]: QueryValue<Shape[Key]>;
|
|
12
14
|
};
|
|
13
|
-
type AcceptRelatedQueryShape<Shape extends Readonly<Record<string, unknown>>, Contract extends AnyPostgresContract, Model extends string> = {
|
|
14
|
-
readonly [Key in keyof Shape]: Shape[Key] & AcceptRelatedQuery<Shape[Key], Contract, Model>;
|
|
15
|
+
type AcceptRelatedQueryShape<Shape extends Readonly<Record<string, unknown>>, Contract extends AnyPostgresContract, Model extends string, DatabaseId> = {
|
|
16
|
+
readonly [Key in keyof Shape]: Shape[Key] & AcceptRelatedQuery<Shape[Key], Contract, Model, DatabaseId>;
|
|
15
17
|
};
|
|
16
18
|
type WithIncludedRelation<Collection, Contract extends AnyPostgresContract, Model extends string, RelationName extends string, Value> = Collection extends PrismaCollection<Contract, Model, infer Row, infer State> ? PrismaCollection<Contract, Model, Simplify<Row & {
|
|
17
19
|
readonly [Key in RelationName]: Value;
|
|
18
20
|
}>, State> : never;
|
|
19
|
-
export type IncludeMethod<Collection,
|
|
20
|
-
include<RelationName extends RelationNames<Contract, Model>>(relationName: RelationName): Relation<WithIncludedRelation<Collection, Contract, Model, RelationName, IncludedRelationValue<Contract, Model, RelationName, DefaultModelRow<Contract, RelatedModelNameOf<Contract, Model, RelationName>>>>,
|
|
21
|
-
include<RelationName extends RelationNames<Contract, Model>, Query>(relationName: RelationName, query: Query & AcceptRelatedQuery<Query, Contract, RelatedModelNameOf<Contract, Model, RelationName
|
|
22
|
-
include<RelationName extends RelationNames<Contract, Model>, Shape extends Readonly<Record<string, unknown>>>(relationName: RelationName, shape: IsToManyRelation<Contract, Model, RelationName> extends true ? keyof Shape extends never ? never : Shape & AcceptRelatedQueryShape<Shape, Contract, RelatedModelNameOf<Contract, Model, RelationName
|
|
21
|
+
export type IncludeMethod<Collection, Contract, Model extends string, DatabaseId> = Contract extends AnyPostgresContract ? Collection extends PrismaCollection<Contract, Model, infer _Row, infer _State> ? {
|
|
22
|
+
include<RelationName extends RelationNames<Contract, Model>>(relationName: RelationName): Relation<WithIncludedRelation<Collection, Contract, Model, RelationName, IncludedRelationValue<Contract, Model, RelationName, DefaultModelRow<Contract, RelatedModelNameOf<Contract, Model, RelationName>>>>, Contract, Model, DatabaseId>;
|
|
23
|
+
include<RelationName extends RelationNames<Contract, Model>, Query>(relationName: RelationName, query: Query & AcceptRelatedQuery<Query, Contract, RelatedModelNameOf<Contract, Model, RelationName>, DatabaseId>): Relation<WithIncludedRelation<Collection, Contract, Model, RelationName, IncludedQueryValue<Query, Contract, Model, RelationName>>, Contract, Model, DatabaseId>;
|
|
24
|
+
include<RelationName extends RelationNames<Contract, Model>, Shape extends Readonly<Record<string, unknown>>>(relationName: RelationName, shape: IsToManyRelation<Contract, Model, RelationName> extends true ? keyof Shape extends never ? never : Shape & AcceptRelatedQueryShape<Shape, Contract, RelatedModelNameOf<Contract, Model, RelationName>, DatabaseId> : never): Relation<WithIncludedRelation<Collection, Contract, Model, RelationName, QueryShapeValue<Shape>>, Contract, Model, DatabaseId>;
|
|
23
25
|
} : Record<never, never> : Record<never, never>;
|
|
24
26
|
export {};
|
|
25
27
|
//# sourceMappingURL=include.d.ts.map
|