@effect-app/infra 2.3.4 → 2.4.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 +12 -0
- package/_cjs/services/OperationsRepo.cjs +10 -1
- package/_cjs/services/OperationsRepo.cjs.map +1 -1
- package/_cjs/services/Repository/dsl.cjs.map +1 -1
- package/_cjs/services/Repository/ext.cjs +58 -104
- package/_cjs/services/Repository/ext.cjs.map +1 -1
- package/_cjs/services/Repository/legacy.cjs +108 -0
- package/_cjs/services/Repository/legacy.cjs.map +1 -0
- package/_cjs/services/Repository.cjs +11 -0
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +12 -233
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/dist/services/OperationsRepo.d.ts +4 -1
- package/dist/services/OperationsRepo.d.ts.map +1 -1
- package/dist/services/OperationsRepo.js +12 -3
- package/dist/services/QueueMaker/errors.d.ts +1 -1
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/Repository/dsl.d.ts.map +1 -1
- package/dist/services/Repository/dsl.js +1 -1
- package/dist/services/Repository/ext.d.ts +43 -104
- package/dist/services/Repository/ext.d.ts.map +1 -1
- package/dist/services/Repository/ext.js +59 -93
- package/dist/services/Repository/legacy.d.ts +139 -0
- package/dist/services/Repository/legacy.d.ts.map +1 -0
- package/dist/services/Repository/legacy.js +99 -0
- package/dist/services/Repository/service.d.ts +21 -2
- package/dist/services/Repository/service.d.ts.map +1 -1
- package/dist/services/Repository.d.ts +1 -0
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +2 -1
- package/dist/services/RepositoryBase.d.ts +13 -256
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +10 -208
- package/dist/services/query/new-kid-interpreter.d.ts +1 -1
- package/examples/query.ts +3 -2
- package/package.json +11 -1
- package/src/services/OperationsRepo.ts +13 -4
- package/src/services/Repository/dsl.ts +1 -0
- package/src/services/Repository/ext.ts +269 -250
- package/src/services/Repository/legacy.ts +351 -0
- package/src/services/Repository/service.ts +44 -2
- package/src/services/Repository.ts +1 -0
- package/src/services/RepositoryBase.ts +64 -1007
- package/test/query.test.ts +10 -8
|
@@ -1,107 +1,46 @@
|
|
|
1
1
|
import { Effect } from "effect-app";
|
|
2
|
-
import {
|
|
3
|
-
import { NotFoundError } from "
|
|
4
|
-
import type {
|
|
2
|
+
import type { InvalidStateError, OptimisticConcurrencyException } from "effect-app/client";
|
|
3
|
+
import { NotFoundError } from "effect-app/client";
|
|
4
|
+
import type { FixEnv, PureEnv } from "effect-app/Pure";
|
|
5
|
+
import type { Query, QueryEnd, QueryWhere } from "../query.js";
|
|
5
6
|
import type { Repository } from "./service.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
id:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}>>;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* @tsplus fluent Repository saveWithPure_
|
|
47
|
-
*/
|
|
48
|
-
export declare function saveWithPure_<R, T, Encoded extends {
|
|
49
|
-
id: string;
|
|
50
|
-
}, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, item: S1, pure: Effect<A, E, FixEnv<R, Evt, S1, S2>>): Effect.Effect<A, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | E, Exclude<R, {
|
|
51
|
-
env: import("effect-app/Pure").PureEnv<Evt, S1, S2>;
|
|
52
|
-
}>>;
|
|
53
|
-
export declare function saveAllWithEffectInt<T, Encoded extends {
|
|
54
|
-
id: string;
|
|
55
|
-
}, P extends T, Evt, ItemType extends string, IdKey extends keyof T, R, E, A>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, gen: Effect<readonly [Iterable<P>, Iterable<Evt>, A], E, R>): Effect.Effect<A, E | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException, R>;
|
|
56
|
-
/**
|
|
57
|
-
* @tsplus fluent Repository saveManyWithPureBatched
|
|
58
|
-
*/
|
|
59
|
-
export declare function saveManyWithPureBatched<T, Encoded extends {
|
|
60
|
-
id: string;
|
|
61
|
-
}, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, batchSize?: number): <R, A, E, S1 extends T, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>) => (items: Iterable<S1>) => Effect.Effect<A[], import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | E, Exclude<R, {
|
|
62
|
-
env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
|
|
63
|
-
}>>;
|
|
64
|
-
/**
|
|
65
|
-
* @tsplus fluent Repository saveManyWithPureBatched_
|
|
66
|
-
*/
|
|
67
|
-
export declare function saveManyWithPureBatched_<R, T, Encoded extends {
|
|
68
|
-
id: string;
|
|
69
|
-
}, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>, batchSize?: number): Effect.Effect<A[], import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | E, Exclude<R, {
|
|
70
|
-
env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
|
|
71
|
-
}>>;
|
|
72
|
-
/**
|
|
73
|
-
* @tsplus getter Repository save
|
|
74
|
-
*/
|
|
75
|
-
export declare function save<T, Encoded extends {
|
|
76
|
-
id: string;
|
|
77
|
-
}, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>): (items_0: T, ...items: T[]) => Effect<void, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException>;
|
|
78
|
-
/**
|
|
79
|
-
* @tsplus getter Repository saveWithEvents
|
|
80
|
-
*/
|
|
81
|
-
export declare function saveWithEvents<T, Encoded extends {
|
|
82
|
-
id: string;
|
|
83
|
-
}, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>): (events: Iterable<Evt>) => (items_0: T, ...items: T[]) => Effect<void, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException>;
|
|
84
|
-
/**
|
|
85
|
-
* @tsplus fluent Repository updateWithEffect
|
|
86
|
-
*/
|
|
87
|
-
export declare function itemUpdateWithEffect<R, E, T extends {
|
|
88
|
-
id: string;
|
|
89
|
-
}, Encoded extends {
|
|
90
|
-
id: string;
|
|
91
|
-
}, Evt, ItemType extends string, IdKey extends keyof T>(repo: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, id: T[IdKey], mod: (item: T) => Effect<T, E, R>): Effect.Effect<void, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | E | NotFoundError<ItemType>, R>;
|
|
92
|
-
/**
|
|
93
|
-
* @tsplus fluent Repository update
|
|
94
|
-
*/
|
|
95
|
-
export declare function itemUpdate<T extends {
|
|
96
|
-
id: string;
|
|
97
|
-
}, Encoded extends {
|
|
98
|
-
id: string;
|
|
99
|
-
}, Evt, ItemType extends string, IdKey extends keyof T>(repo: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, id: T[IdKey], mod: (item: T) => T): Effect.Effect<void, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | NotFoundError<ItemType>, never>;
|
|
100
|
-
/**
|
|
101
|
-
* only use this as a shortcut if you don't have the item already
|
|
102
|
-
* @tsplus fluent Repository removeById
|
|
103
|
-
*/
|
|
104
|
-
export declare function removeById<T, Encoded extends {
|
|
105
|
-
id: string;
|
|
106
|
-
}, Evt, ItemType extends string, IdKey extends keyof T>(self: Repository<T, Encoded, Evt, ItemType, IdKey>, id: T[IdKey]): Effect.Effect<void, NotFoundError<ItemType>, never>;
|
|
7
|
+
export declare const extendRepo: <T, Encoded extends {
|
|
8
|
+
id: string;
|
|
9
|
+
}, Evt, ItemType extends string, IdKey extends keyof T>(repo: Repository<T, Encoded, Evt, ItemType, IdKey>) => Repository<T, Encoded, Evt, ItemType, IdKey> & {
|
|
10
|
+
request: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, never>;
|
|
11
|
+
get: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, never>;
|
|
12
|
+
log: (evt: Evt) => import("effect-app/Pure").PureLogT<any>;
|
|
13
|
+
removeById: (id: T[IdKey]) => Effect.Effect<void, NotFoundError<ItemType>, never>;
|
|
14
|
+
save: (items_0: T, ...items: T[]) => Effect<void, OptimisticConcurrencyException | InvalidStateError>;
|
|
15
|
+
saveWithEvents: (events: Iterable<Evt>) => (items_0: T, ...items: T[]) => Effect<void, OptimisticConcurrencyException | InvalidStateError>;
|
|
16
|
+
queryAndSavePure: {
|
|
17
|
+
<A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => QueryEnd<Encoded, "one">, pure: Effect<A, E2, FixEnv<R2, Evt, T, T2>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType> | E2, Exclude<R2, {
|
|
18
|
+
env: PureEnv<Evt, T, T2>;
|
|
19
|
+
}>>;
|
|
20
|
+
<A, E2_1, R2_1, T2_1 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded, "many">, pure: Effect<A, E2_1, FixEnv<R2_1, Evt, readonly T[], readonly T2_1[]>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | E2_1, Exclude<R2_1, {
|
|
21
|
+
env: PureEnv<Evt, readonly T[], readonly T2_1[]>;
|
|
22
|
+
}>>;
|
|
23
|
+
<A, E2_2, R2_2, T2_2 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded, "many">, pure: Effect<A, E2_2, FixEnv<R2_2, Evt, readonly T[], readonly T2_2[]>>, batch: "batched" | number): Effect.Effect<A[], InvalidStateError | OptimisticConcurrencyException | E2_2, Exclude<R2_2, {
|
|
24
|
+
env: PureEnv<Evt, readonly T[], readonly T2_2[]>;
|
|
25
|
+
}>>;
|
|
26
|
+
};
|
|
27
|
+
saveManyWithPure: {
|
|
28
|
+
<R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
|
|
29
|
+
env: PureEnv<Evt, readonly S1[], readonly S2[]>;
|
|
30
|
+
}>>;
|
|
31
|
+
<R, A_1, E_1, S1_1 extends T, S2_1 extends T>(items: Iterable<S1_1>, pure: Effect<A_1, E_1, FixEnv<R, Evt, readonly S1_1[], readonly S2_1[]>>, batch: "batched" | number): Effect.Effect<A_1[], InvalidStateError | OptimisticConcurrencyException | E_1, Exclude<R, {
|
|
32
|
+
env: PureEnv<Evt, readonly S1_1[], readonly S2_1[]>;
|
|
33
|
+
}>>;
|
|
34
|
+
};
|
|
35
|
+
byIdAndSaveWithPure: <R, A_2, E_2, S2_2 extends T>(id: T[IdKey], pure: Effect<A_2, E_2, FixEnv<R, Evt, T, S2_2>>) => Effect<A_2, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType> | E_2, Exclude<R, {
|
|
36
|
+
env: PureEnv<Evt, T, S2_2>;
|
|
37
|
+
}>>;
|
|
38
|
+
saveWithPure: <R, A_3, E_3, S1_2 extends T, S2_3 extends T>(item: S1_2, pure: Effect<A_3, E_3, FixEnv<R, Evt, S1_2, S2_3>>) => Effect.Effect<A_3, OptimisticConcurrencyException | E_3 | InvalidStateError, Exclude<R, {
|
|
39
|
+
env: PureEnv<Evt, S1_2, S2_3>;
|
|
40
|
+
}>>;
|
|
41
|
+
};
|
|
42
|
+
export interface ExtendedRepository<T, Encoded extends {
|
|
43
|
+
id: string;
|
|
44
|
+
}, Evt, ItemType extends string, IdKey extends keyof T> extends ReturnType<typeof extendRepo<T, Encoded, Evt, ItemType, IdKey>> {
|
|
45
|
+
}
|
|
107
46
|
//# sourceMappingURL=ext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/ext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/ext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,95 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// Modify = Must `set` updated items, and can return anything.
|
|
4
|
-
import { Array, Effect } from "effect-app";
|
|
1
|
+
import { Array, Effect, Exit, Option, Request, RequestResolver } from "effect-app";
|
|
2
|
+
import { NotFoundError } from "effect-app/client";
|
|
5
3
|
import { runTerm } from "effect-app/Pure";
|
|
6
|
-
import
|
|
4
|
+
import * as Q from "../query.js";
|
|
7
5
|
import { AnyPureDSL } from "./dsl.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* @tsplus getter Repository save
|
|
66
|
-
*/
|
|
67
|
-
export function save(self) {
|
|
68
|
-
return (...items) => self.saveAndPublish(items);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* @tsplus getter Repository saveWithEvents
|
|
72
|
-
*/
|
|
73
|
-
export function saveWithEvents(self) {
|
|
74
|
-
return (events) => (...items) => self.saveAndPublish(items, events);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* @tsplus fluent Repository updateWithEffect
|
|
78
|
-
*/
|
|
79
|
-
export function itemUpdateWithEffect(repo, id, mod) {
|
|
80
|
-
return get(repo, id).pipe(Effect.andThen(mod), Effect.andThen(save(repo)));
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* @tsplus fluent Repository update
|
|
84
|
-
*/
|
|
85
|
-
export function itemUpdate(repo, id, mod) {
|
|
86
|
-
return itemUpdateWithEffect(repo, id, (item) => Effect.sync(() => mod(item)));
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* only use this as a shortcut if you don't have the item already
|
|
90
|
-
* @tsplus fluent Repository removeById
|
|
91
|
-
*/
|
|
92
|
-
export function removeById(self, id) {
|
|
93
|
-
return get(self, id).pipe(Effect.flatMap((_) => self.removeAndPublish([_])));
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnkvZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxxQ0FBcUM7QUFDckMsOERBQThEO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTFDLE9BQU8sRUFBZSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUdyQzs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFHLENBT2pCLElBQXVELEVBQ3ZELEVBQVk7SUFFWixPQUFPLElBQUk7U0FDUixJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNwSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQU1qQixDQUFvRDtJQUNwRCxPQUFPLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzFDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FNakMsSUFBdUQsRUFBRSxFQUFZO0lBQ3JFLE9BQU8sQ0FBd0IsSUFBeUMsRUFBRSxFQUFFLENBQzFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1B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
|
|
6
|
+
export const extendRepo = (repo) => {
|
|
7
|
+
const get = (id) => Effect.flatMap(repo.find(id), (_) => Effect.mapError(_, () => new NotFoundError({ type: repo.itemType, id })));
|
|
8
|
+
function saveManyWithPure_(self, items, pure) {
|
|
9
|
+
return saveAllWithEffectInt(self, runTerm(pure, [...items]));
|
|
10
|
+
}
|
|
11
|
+
function saveWithPure_(self, item, pure) {
|
|
12
|
+
return saveAllWithEffectInt(self, runTerm(pure, item)
|
|
13
|
+
.pipe(Effect
|
|
14
|
+
.map(([item, events, a]) => [[item], events, a])));
|
|
15
|
+
}
|
|
16
|
+
function saveAllWithEffectInt(self, gen) {
|
|
17
|
+
return Effect.flatMap(gen, ([items, events, a]) => self.saveAndPublish(items, events).pipe(Effect.map(() => a)));
|
|
18
|
+
}
|
|
19
|
+
function saveManyWithPureBatched_(self, items, pure, batchSize = 100) {
|
|
20
|
+
return Effect.forEach(Array.chunk_(items, batchSize), (batch) => saveAllWithEffectInt(self, runTerm(pure, batch)));
|
|
21
|
+
}
|
|
22
|
+
const queryAndSavePure = (q, pure, batch) => repo.query(q).pipe(Effect.andThen((_) => Array.isArray(_)
|
|
23
|
+
? batch === undefined
|
|
24
|
+
? saveManyWithPure_(repo, _, pure)
|
|
25
|
+
: saveManyWithPureBatched_(repo, _, pure, batch === "batched" ? 100 : batch)
|
|
26
|
+
: saveWithPure_(repo, _, pure)));
|
|
27
|
+
const saveManyWithPure = (items, pure, batch) => batch
|
|
28
|
+
? Effect.forEach(Array.chunk_(items, batch === "batched" ? 100 : batch), (batch) => saveAllWithEffectInt(repo, runTerm(pure, batch)))
|
|
29
|
+
: saveAllWithEffectInt(repo, runTerm(pure, [...items]));
|
|
30
|
+
const byIdAndSaveWithPure = (id, pure) => get(id).pipe(Effect.flatMap((item) => saveWithPure_(repo, item, pure)));
|
|
31
|
+
const _request = Request.tagged(`Get${repo.itemType}`);
|
|
32
|
+
const requestResolver = RequestResolver
|
|
33
|
+
.makeBatched((requests) => repo.query(Q.where("id", "in", requests.map((_) => _.id)))
|
|
34
|
+
// TODO
|
|
35
|
+
.pipe(Effect.andThen((items) => Effect.forEach(requests, (r) => Request.complete(r, Array
|
|
36
|
+
.findFirst(items, (_) => _[repo.idKey] === r.id)
|
|
37
|
+
.pipe(Option.match({
|
|
38
|
+
onNone: () => Exit.fail(new NotFoundError({ type: repo.itemType, id: r.id })),
|
|
39
|
+
onSome: Exit.succeed
|
|
40
|
+
}))), { discard: true })), Effect
|
|
41
|
+
.catchAllCause((cause) => Effect.forEach(requests, Request.complete(Exit.failCause(cause)), { discard: true }))))
|
|
42
|
+
.pipe(RequestResolver.batchN(20));
|
|
43
|
+
const exts = {
|
|
44
|
+
request: (id) => Effect.request(_request({ id }), requestResolver),
|
|
45
|
+
get,
|
|
46
|
+
log: (evt) => AnyPureDSL.log(evt),
|
|
47
|
+
removeById: (id) => Effect.andThen(get(id), (_) => repo.removeAndPublish([_])),
|
|
48
|
+
save: (...items) => repo.saveAndPublish(items),
|
|
49
|
+
saveWithEvents: (events) => (...items) => repo.saveAndPublish(items, events),
|
|
50
|
+
queryAndSavePure,
|
|
51
|
+
saveManyWithPure,
|
|
52
|
+
byIdAndSaveWithPure,
|
|
53
|
+
saveWithPure: (item, pure) => saveAllWithEffectInt(repo, runTerm(pure, item)
|
|
54
|
+
.pipe(Effect.map(([item, events, a]) => [[item], events, a])))
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
...repo,
|
|
58
|
+
...exts
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnkvZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXpDLE9BQU8sS0FBSyxDQUFDLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHckMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQWtELEVBQ2xELEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQVksRUFBRSxFQUFFLENBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDYixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxhQUFhLENBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQzFGLENBQUE7SUFDSCxTQUFTLGlCQUFpQixDQVl4QixJQUFrRCxFQUNsRCxLQUFtQixFQUNuQixJQUFnRTtRQUVoRSxPQUFPLG9CQUFvQixDQUN6QixJQUFJLEVBQ0osT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FDMUIsQ0FBQTtJQUNILENBQUM7SUFFRCxTQUFTLGFBQWEsQ0FZcEIsSUFBa0QsRUFDbEQsSUFBUSxFQUNSLElBQTBDO1FBRTFDLE9BQU8sb0JBQW9CLENBQ3pCLElBQUksRUFDSixPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQzthQUNoQixJQUFJLENBQUMsTUFBTTthQUNULEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3RELENBQUE7SUFDSCxDQUFDO0lBRUQsU0FBUyxvQkFBb0IsQ0FXM0IsSUFBa0QsRUFDbEQsR0FBMkQ7UUFFM0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xILENBQUM7SUFFRCxTQUFTLHdCQUF3QixDQVkvQixJQUFrRCxFQUNsRCxLQUFtQixFQUNuQixJQUFnRSxFQUNoRSxTQUFTLEdBQUcsR0FBRztRQUVmLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FDbkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQzlCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixvQkFBb0IsQ0FDbEIsSUFBSSxFQUNKLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ3JCLENBQ0osQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQTRDbEIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQTBCLEVBQUUsRUFBRSxDQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQ25CLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBUSxFQUFFLElBQVcsQ0FBQztZQUNoRCxDQUFDLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLENBQVEsRUFBRSxJQUFXLEVBQUUsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUYsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBUSxFQUFFLElBQVcsQ0FBQyxDQUMvQyxDQUNLLENBQUE7SUFFVixNQUFNLGdCQUFnQixHQXNCbEIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQTBCLEVBQUUsRUFBRSxDQUM5QyxLQUFLO1FBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFDdEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLG9CQUFvQixDQUNsQixJQUFJLEVBQ0osT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FDckIsQ0FDSjtRQUNELENBQUMsQ0FBQyxvQkFBb0IsQ0FDcEIsSUFBSSxFQUNKLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQzFCLENBQUE7SUFFTCxNQUFNLG1CQUFtQixHQVdyQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBSzlGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQU0sTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUUzRCxNQUFNLGVBQWUsR0FBRyxlQUFlO1NBQ3BDLFdBQVcsQ0FBQyxDQUNYLFFBQW9DLEVBQ3BDLEVBQUUsQ0FDRCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQVEsQ0FBaUM7UUFDaEcsT0FBTztTQUNOLElBQUksQ0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM3QixPQUFPLENBQUMsUUFBUSxDQUNkLENBQUMsRUFDRCxLQUFLO1NBQ0YsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztLQUNyQixDQUFDLENBQUMsQ0FDTixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQ3hCLEVBQ0QsTUFBTTtTQUNILGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQ3JGLENBQ0osQ0FDSjtTQUNBLElBQUksQ0FDSCxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUMzQixDQUFBO0lBRUgsTUFBTSxJQUFJLEdBQUc7UUFDWCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUM7UUFDNUUsR0FBRztRQUNILEdBQUcsRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDdEMsVUFBVSxFQUFFLENBQUMsRUFBWSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RixJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ2hFLGNBQWMsRUFBRSxDQUFDLE1BQXFCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDN0csZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsWUFBWSxFQUFFLENBT1osSUFBUSxFQUNSLElBQTBDLEVBQzFDLEVBQUUsQ0FDRixvQkFBb0IsQ0FDbEIsSUFBSSxFQUNKLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEU7S0FDSixDQUFBO0lBRUQsT0FBTztRQUNMLEdBQUcsSUFBSTtRQUNQLEdBQUcsSUFBSTtLQUNzRCxDQUFBO0FBQ2pFLENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { NonEmptyReadonlyArray, Option, ParseResult, S } from "effect-app";
|
|
2
|
+
import { Context, Effect, Layer } from "effect-app";
|
|
3
|
+
import type { NotFoundError, OptimisticConcurrencyException } from "effect-app/client";
|
|
4
|
+
import * as Q from "../query.js";
|
|
5
|
+
import type { Repos } from "../RepositoryBase.js";
|
|
6
|
+
import type { StoreConfig, StoreMaker } from "../Store.js";
|
|
7
|
+
import type { ExtendedRepository } from "./ext.js";
|
|
8
|
+
import type { Repository } from "./service.js";
|
|
9
|
+
/** @deprecated use makeRepo/extendRepo */
|
|
10
|
+
export declare class RepositoryBase<T, Encoded extends {
|
|
11
|
+
id: string;
|
|
12
|
+
}, Evt, ItemType extends string, Ext, IdKey extends keyof T> implements ExtendedRepository<T, Encoded, Evt, ItemType, IdKey> {
|
|
13
|
+
protected readonly impl: ExtendedRepository<T, Encoded, Evt, ItemType, IdKey> & Ext;
|
|
14
|
+
constructor(impl: ExtendedRepository<T, Encoded, Evt, ItemType, IdKey> & Ext);
|
|
15
|
+
get: (id: T[IdKey]) => Effect<T, NotFoundError<ItemType>>;
|
|
16
|
+
idKey: IdKey;
|
|
17
|
+
request: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, never>;
|
|
18
|
+
itemType: ItemType;
|
|
19
|
+
saveAndPublish: (items: Iterable<T>, events?: Iterable<Evt> | undefined) => Effect<void, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException>;
|
|
20
|
+
removeAndPublish: (items: Iterable<T>, events?: Iterable<Evt> | undefined) => Effect<void>;
|
|
21
|
+
find: (id: T[IdKey]) => Effect<Option<T>>;
|
|
22
|
+
all: Effect<T[]>;
|
|
23
|
+
changeFeed: import("effect/PubSub").PubSub<[T[], "save" | "remove"]>;
|
|
24
|
+
mapped: Mapped<Encoded>;
|
|
25
|
+
query: {
|
|
26
|
+
<A, R, Encoded2 extends import("../../filter/types.js").FieldValues, TType extends "one" | "many" | "count" = "many">(q: (initial: Q.Query<Encoded>) => Q.QueryProjection<Encoded extends Encoded2 ? Encoded2 : never, A, R, TType>): Effect.Effect<TType extends "many" ? readonly A[] : TType extends "count" ? S.NonNegativeInt : A, (TType extends "many" ? never : NotFoundError<ItemType>) | (TType extends "count" ? never : ParseResult.ParseError), R>;
|
|
27
|
+
<R = never, TType extends "one" | "many" = "many">(q: (initial: Q.Query<Encoded>) => Q.QAll<Encoded, T, R, TType>): Effect.Effect<TType extends "many" ? readonly T[] : T, TType extends "many" ? never : NotFoundError<ItemType>, R>;
|
|
28
|
+
};
|
|
29
|
+
log: (evt: Evt) => import("effect-app/Pure").PureLogT<any>;
|
|
30
|
+
removeById: (id: T[IdKey]) => Effect.Effect<void, NotFoundError<ItemType>, never>;
|
|
31
|
+
save: (items_0: T, ...items: T[]) => Effect<void, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError>;
|
|
32
|
+
saveWithEvents: (events: Iterable<Evt>) => (items_0: T, ...items: T[]) => Effect<void, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError>;
|
|
33
|
+
queryAndSavePure: {
|
|
34
|
+
<A, E2, R2, T2 extends T>(q: (q: Q.Query<Encoded>) => Q.QueryEnd<Encoded, "one">, pure: Effect<A, E2, import("effect-app/Pure").FixEnv<R2, Evt, T, T2>>): Effect.Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | NotFoundError<ItemType> | E2, Exclude<R2, {
|
|
35
|
+
env: import("effect-app/Pure").PureEnv<Evt, T, T2>;
|
|
36
|
+
}>>;
|
|
37
|
+
<A, E2, R2, T2 extends T>(q: (q: Q.Query<Encoded>) => Q.Query<Encoded> | Q.QueryWhere<Encoded> | Q.QueryEnd<Encoded, "many">, pure: Effect<A, E2, import("effect-app/Pure").FixEnv<R2, Evt, readonly T[], readonly T2[]>>): Effect.Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E2, Exclude<R2, {
|
|
38
|
+
env: import("effect-app/Pure").PureEnv<Evt, readonly T[], readonly T2[]>;
|
|
39
|
+
}>>;
|
|
40
|
+
<A, E2, R2, T2 extends T>(q: (q: Q.Query<Encoded>) => Q.Query<Encoded> | Q.QueryWhere<Encoded> | Q.QueryEnd<Encoded, "many">, pure: Effect<A, E2, import("effect-app/Pure").FixEnv<R2, Evt, readonly T[], readonly T2[]>>, batch: "batched" | number): Effect.Effect<A[], OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E2, Exclude<R2, {
|
|
41
|
+
env: import("effect-app/Pure").PureEnv<Evt, readonly T[], readonly T2[]>;
|
|
42
|
+
}>>;
|
|
43
|
+
};
|
|
44
|
+
saveManyWithPure: {
|
|
45
|
+
<R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect<A, E, import("effect-app/Pure").FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E, Exclude<R, {
|
|
46
|
+
env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
|
|
47
|
+
}>>;
|
|
48
|
+
<R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect<A, E, import("effect-app/Pure").FixEnv<R, Evt, readonly S1[], readonly S2[]>>, batch: "batched" | number): Effect.Effect<A[], OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E, Exclude<R, {
|
|
49
|
+
env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
|
|
50
|
+
}>>;
|
|
51
|
+
};
|
|
52
|
+
byIdAndSaveWithPure: <R, A, E, S2 extends T>(id: T[IdKey], pure: Effect<A, E, import("effect-app/Pure").FixEnv<R, Evt, T, S2>>) => Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | NotFoundError<ItemType> | E, Exclude<R, {
|
|
53
|
+
env: import("effect-app/Pure").PureEnv<Evt, T, S2>;
|
|
54
|
+
}>>;
|
|
55
|
+
saveWithPure: <R, A, E, S1 extends T, S2 extends T>(item: S1, pure: Effect<A, E, import("effect-app/Pure").FixEnv<R, Evt, S1, S2>>) => Effect.Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E, Exclude<R, {
|
|
56
|
+
env: import("effect-app/Pure").PureEnv<Evt, S1, S2>;
|
|
57
|
+
}>>;
|
|
58
|
+
}
|
|
59
|
+
export declare const RepositoryDefaultImpl2: <Service, Evt = never>() => {
|
|
60
|
+
<ItemType extends string, R, Encoded extends {
|
|
61
|
+
id: string;
|
|
62
|
+
}, T, IdKey extends keyof T, E = never, RInitial = never, R2 = never, Layers extends [Layer.Layer.Any, ...Layer.Layer.Any[]] = [Layer.Layer<never, never, never>], E1 = never, R1 = never, Ext = {}>(itemType: ItemType, schema: S.Schema<T, Encoded, R>, options: [Evt] extends [never] ? {
|
|
63
|
+
dependencies?: Layers;
|
|
64
|
+
idKey: IdKey;
|
|
65
|
+
config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
|
|
66
|
+
partitionValue?: (a: Encoded) => string;
|
|
67
|
+
};
|
|
68
|
+
jitM?: (pm: Encoded) => Encoded;
|
|
69
|
+
options?: Effect<{
|
|
70
|
+
makeInitial?: Effect<readonly T[], E, RInitial>;
|
|
71
|
+
ext?: Ext;
|
|
72
|
+
}, E1, R1>;
|
|
73
|
+
} : {
|
|
74
|
+
dependencies?: Layers;
|
|
75
|
+
idKey: IdKey;
|
|
76
|
+
jitM?: (pm: Encoded) => Encoded;
|
|
77
|
+
config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
|
|
78
|
+
partitionValue?: (a: Encoded) => string;
|
|
79
|
+
};
|
|
80
|
+
options?: Effect<{
|
|
81
|
+
publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect<void, never, R2>;
|
|
82
|
+
makeInitial?: Effect<readonly T[], E, RInitial>;
|
|
83
|
+
ext?: Ext;
|
|
84
|
+
}, E1, R1>;
|
|
85
|
+
}): (abstract new (impl: Repository<T, Encoded, Evt, ItemType, IdKey> & Ext) => RepositoryBase<T, Encoded, Evt, ItemType, Ext, IdKey>) & Context.Tag<Service, Service> & {
|
|
86
|
+
Default: Layer.Layer<Service, E1 | Layer.Layer.Error<Layers[number]>, Exclude<R1 | R | StoreMaker, { [k in keyof Layers]: Layer.Layer.Success<Layers[k]>; }[number]>>;
|
|
87
|
+
DefaultWithoutDependencies: Layer.Layer<Service, E1, R1 | R | StoreMaker>;
|
|
88
|
+
} & Repos<T, Encoded, R, Evt, ItemType, IdKey>;
|
|
89
|
+
<ItemType extends string, R_1, Encoded_1 extends {
|
|
90
|
+
id: string;
|
|
91
|
+
}, T_1 extends {
|
|
92
|
+
id: unknown;
|
|
93
|
+
}, E_1 = never, RInitial_1 = never, R2_1 = never, Layers_1 extends [Layer.Layer.Any, ...Layer.Layer.Any[]] = [Layer.Layer<never, never, never>], E1_1 = never, R1_1 = never, Ext_1 = {}>(itemType: ItemType, schema: S.Schema<T_1, Encoded_1, R_1>, options: [Evt] extends [never] ? {
|
|
94
|
+
dependencies?: Layers_1;
|
|
95
|
+
config?: Omit<StoreConfig<Encoded_1>, "partitionValue"> & {
|
|
96
|
+
partitionValue?: (a: Encoded_1) => string;
|
|
97
|
+
};
|
|
98
|
+
jitM?: (pm: Encoded_1) => Encoded_1;
|
|
99
|
+
options?: Effect<{
|
|
100
|
+
makeInitial?: Effect<readonly T_1[], E_1, RInitial_1>;
|
|
101
|
+
ext?: Ext_1;
|
|
102
|
+
}, E1_1, R1_1>;
|
|
103
|
+
} : {
|
|
104
|
+
dependencies?: Layers_1;
|
|
105
|
+
jitM?: (pm: Encoded_1) => Encoded_1;
|
|
106
|
+
config?: Omit<StoreConfig<Encoded_1>, "partitionValue"> & {
|
|
107
|
+
partitionValue?: (a: Encoded_1) => string;
|
|
108
|
+
};
|
|
109
|
+
options?: Effect<{
|
|
110
|
+
publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect<void, never, R2_1>;
|
|
111
|
+
makeInitial?: Effect<readonly T_1[], E_1, RInitial_1>;
|
|
112
|
+
ext?: Ext_1;
|
|
113
|
+
}, E1_1, R1_1>;
|
|
114
|
+
}): (abstract new (impl: Repository<T_1, Encoded_1, Evt, ItemType, "id"> & Ext_1) => RepositoryBase<T_1, Encoded_1, Evt, ItemType, Ext_1, "id">) & Context.Tag<Service, Service> & {
|
|
115
|
+
Default: Layer.Layer<Service, E1_1 | Layer.Layer.Error<Layers_1[number]>, Exclude<R1_1 | R_1 | StoreMaker, { [k in keyof Layers_1]: Layer.Layer.Success<Layers_1[k]>; }[number]>>;
|
|
116
|
+
DefaultWithoutDependencies: Layer.Layer<Service, E1_1, R1_1 | R_1 | StoreMaker>;
|
|
117
|
+
} & Repos<T_1, Encoded_1, R_1, Evt, ItemType, "id">;
|
|
118
|
+
};
|
|
119
|
+
export interface Mapped1<A, IdKey extends keyof A, R> {
|
|
120
|
+
all: Effect<A[], ParseResult.ParseError, R>;
|
|
121
|
+
save: (...xes: readonly A[]) => Effect<void, OptimisticConcurrencyException | ParseResult.ParseError, R>;
|
|
122
|
+
find: (id: A[IdKey]) => Effect<Option<A>, ParseResult.ParseError, R>;
|
|
123
|
+
}
|
|
124
|
+
export interface Mapped2<A, R> {
|
|
125
|
+
all: Effect<A[], ParseResult.ParseError, R>;
|
|
126
|
+
}
|
|
127
|
+
export interface Mapped<Encoded extends {
|
|
128
|
+
id: string;
|
|
129
|
+
}> {
|
|
130
|
+
<A, R, IdKey extends keyof A>(schema: S.Schema<A, Encoded, R>): Mapped1<A, IdKey, R>;
|
|
131
|
+
<A, Encoded2, R>(schema: S.Schema<A, Encoded2, R>): Mapped2<A, R>;
|
|
132
|
+
}
|
|
133
|
+
export interface MM<Repo, Encoded extends {
|
|
134
|
+
id: string;
|
|
135
|
+
}> {
|
|
136
|
+
<A, R, IdKey extends keyof A>(schema: S.Schema<A, Encoded, R>): Effect<Mapped1<A, IdKey, R>, never, Repo>;
|
|
137
|
+
<A, Encoded2, R>(schema: S.Schema<A, Encoded2, R>): Effect<Mapped2<A, R>, never, Repo>;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=legacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/legacy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAA;AACtF,OAAO,KAAK,CAAC,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAe9C,0CAA0C;AAC1C,qBAAa,cAAc,CAAC,CAAC,EAAE,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,EAAE,QAAQ,SAAS,MAAM,EAAE,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,CACrH,YAAW,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC;IAEnD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,GAAG;gBAAhE,IAAI,EAAE,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,GAAG;IAqB/F,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,KAAK,QAAA;IACL,OAAO,qEAAA;IACP,QAAQ,WAAA;IACR,cAAc,2JAAA;IACd,gBAAgB,2EAAA;IAChB,IAAI,sCAAA;IACJ,GAAG,cAAA;IACH,UAAU,2DAAA;IACV,MAAM,kBAAA;IACN,KAAK;;;MAAA;IACL,GAAG,wDAAA;IACH,UAAU,wEAAA;IACV,IAAI,8HAAA;IACJ,cAAc,yJAAA;IACd,gBAAgB;;;;;;;;;;MAAA;IAChB,gBAAgB;;;;;;;MAAA;IAChB,mBAAmB;;QAAA;IACnB,YAAY;;QAAA;CACb;AAED,eAAO,MAAM,sBAAsB,GAAI,OAAO,EAAE,GAAG;KAG7C,QAAQ,SAAS,MAAM,EACvB,CAAC,EACD,OAAO,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAC9B,CAAC,EACD,KAAK,SAAS,MAAM,CAAC,EACrB,CAAC,UACD,QAAQ,UACR,EAAE,UACF,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,uCACtD,EAAE,UACF,EAAE,UAEF,GAAG,iBAEO,QAAQ,UACV,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,WACtB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;QAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,KAAK,EAAE,KAAK,CAAA;QACZ,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,GAAG;YACtD,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;SACxC,CAAA;QACD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAA;QAC/B,OAAO,CAAC,EAAE,MAAM,CACd;YACE,WAAW,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;YAC/C,GAAG,CAAC,EAAE,GAAG,CAAA;SACV,EACD,EAAE,EACF,EAAE,CACH,CAAA;KACF,GACC;QACA,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,KAAK,EAAE,KAAK,CAAA;QACZ,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAA;QAC/B,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,GAAG;YACtD,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;SACxC,CAAA;QACD,OAAO,CAAC,EAAE,MAAM,CACd;YACE,aAAa,EAAE,CAAC,GAAG,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;YAC3E,WAAW,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;YAC/C,GAAG,CAAC,EAAE,GAAG,CAAA;SACV,EACD,EAAE,EACF,EAAE,CACH,CAAA;KACF,GAED,CAAC,QAAQ,MACT,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,GAAG,KACrD,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,GACzD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,GAC7B;QACA,OAAO,EAAE,KAAK,CAAC,KAAK,CAClB,OAAO,EACP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACtC,OAAO,CACL,EAAE,GAAG,CAAC,GAAG,UAAU,EACnB,GAAG,CAAiB,IAAZ,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,CAChE,CACF,CAAA;QACD,0BAA0B,EAAE,KAAK,CAAC,KAAK,CACrC,OAAO,EACP,EAAE,EACF,EAAE,GAAG,CAAC,GAAG,UAAU,CACpB,CAAA;KACF,GACC,KAAK,CACL,CAAC,EACD,OAAO,EACP,CAAC,EACD,GAAG,EACH,QAAQ,EACR,KAAK,CACN;KAED,QAAQ,SAAS,MAAM,yBAEP;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,cACpB;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,kEAIV,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,yFAM5C,QAAQ,UACV,CAAC,CAAC,MAAM,CAAC,GAAC,EAAE,SAAO,EAAE,GAAC,CAAC,WACtB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;QAC7B,YAAY,CAAC,EAAE,QAAM,CAAA;QACrB,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,SAAO,CAAC,EAAE,gBAAgB,CAAC,GAAG;YACtD,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,SAAO,KAAK,MAAM,CAAA;SACxC,CAAA;QACD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,SAAO,KAAK,SAAO,CAAA;QAC/B,OAAO,CAAC,EAAE,MAAM,CACd;YACE,WAAW,CAAC,EAAE,MAAM,CAAC,SAAS,GAAC,EAAE,EAAE,GAAC,EAAE,UAAQ,CAAC,CAAA;YAC/C,GAAG,CAAC,EAAE,KAAG,CAAA;SACV,EACD,IAAE,EACF,IAAE,CACH,CAAA;KACF,GACC;QACA,YAAY,CAAC,EAAE,QAAM,CAAA;QACrB,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,SAAO,KAAK,SAAO,CAAA;QAC/B,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,SAAO,CAAC,EAAE,gBAAgB,CAAC,GAAG;YACtD,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,SAAO,KAAK,MAAM,CAAA;SACxC,CAAA;QACD,OAAO,CAAC,EAAE,MAAM,CACd;YACE,aAAa,EAAE,CAAC,GAAG,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAE,CAAC,CAAA;YAC3E,WAAW,CAAC,EAAE,MAAM,CAAC,SAAS,GAAC,EAAE,EAAE,GAAC,EAAE,UAAQ,CAAC,CAAA;YAC/C,GAAG,CAAC,EAAE,KAAG,CAAA;SACV,EACD,IAAE,EACF,IAAE,CACH,CAAA;KACF,GAED,CAAC,QAAQ,MACT,IAAI,EAAE,UAAU,CAAC,GAAC,EAAE,SAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,KAAG,KACpD,cAAc,CAAC,GAAC,EAAE,SAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAG,EAAE,IAAI,CAAC,CAAC,GACxD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,GAC7B;QACA,OAAO,EAAE,KAAK,CAAC,KAAK,CAClB,OAAO,EACP,IAAE,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAM,CAAC,MAAM,CAAC,CAAC,EACtC,OAAO,CACL,IAAE,GAAG,GAAC,GAAG,UAAU,EACnB,GAAG,CAAiB,IAAZ,MAAM,QAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAM,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,CAChE,CACF,CAAA;QACD,0BAA0B,EAAE,KAAK,CAAC,KAAK,CACrC,OAAO,EACP,IAAE,EACF,IAAE,GAAG,GAAC,GAAG,UAAU,CACpB,CAAA;KACF,GACC,KAAK,CACL,GAAC,EACD,SAAO,EACP,GAAC,EACD,GAAG,EACH,QAAQ,EACR,IAAI,CACL;CAsGN,CAAA;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,CAAC;IAClD,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAC3C,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,EAAE,8BAA8B,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IACxG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;CACrE;AAGD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,MAAM,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IACpD,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAEpF,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IACtD,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAEzG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CACvF"}
|