@effect-app/infra 0.96.1 → 0.97.1
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 +16 -0
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +101 -76
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_src/services/Repository.ts +27 -50
- package/_src/services/RepositoryBase.ts +167 -144
- package/dist/services/Repository.d.ts +42 -59
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +1 -1
- package/dist/services/RepositoryBase.d.ts +75 -104
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +99 -77
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Effect } from "effect/Effect";
|
|
2
2
|
import { PubSub } from "effect/PubSub";
|
|
3
|
-
import { Tag } from "effect/Context";
|
|
4
|
-
import { Layer } from "effect/Layer";
|
|
5
3
|
import { NonEmptyReadonlyArray } from "effect/ReadonlyArray";
|
|
4
|
+
import { Layer } from "effect/Layer";
|
|
5
|
+
import { Tag } from "effect/Context";
|
|
6
6
|
import type { ParserEnv } from "@effect-app/schema/custom/Parser";
|
|
7
7
|
import type { Repository } from "./Repository.js";
|
|
8
8
|
import { StoreMaker } from "./Store.js";
|
|
@@ -12,19 +12,18 @@ import type { Schema } from "@effect-app/prelude";
|
|
|
12
12
|
import type { InvalidStateError, OptimisticConcurrencyException } from "../errors.js";
|
|
13
13
|
import { ContextMapContainer } from "./Store/ContextMapContainer.js";
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* @tsplus type Repository
|
|
16
16
|
*/
|
|
17
|
-
export declare
|
|
17
|
+
export declare abstract class RepositoryBaseC<T extends {
|
|
18
18
|
id: string;
|
|
19
19
|
}, PM extends {
|
|
20
20
|
id: string;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
readonly
|
|
24
|
-
readonly
|
|
25
|
-
readonly
|
|
26
|
-
readonly
|
|
27
|
-
readonly utils: {
|
|
21
|
+
}, Evt, ItemType extends string> {
|
|
22
|
+
abstract readonly itemType: ItemType;
|
|
23
|
+
abstract readonly find: (id: T["id"]) => Effect<never, never, Opt<T>>;
|
|
24
|
+
abstract readonly all: Effect<never, never, T[]>;
|
|
25
|
+
abstract readonly saveAndPublish: (items: Iterable<T>, events?: Iterable<Evt>) => Effect<never, InvalidStateError | OptimisticConcurrencyException, void>;
|
|
26
|
+
abstract readonly utils: {
|
|
28
27
|
mapReverse: (pm: PM, setEtag: (id: string, eTag: string | undefined) => void) => unknown;
|
|
29
28
|
parse: (a: unknown, env?: ParserEnv | undefined) => T;
|
|
30
29
|
all: Effect<never, never, PM[]>;
|
|
@@ -33,57 +32,57 @@ export declare const RepositoryBase: <Service>() => <T extends {
|
|
|
33
32
|
skip?: number;
|
|
34
33
|
}) => Effect<never, never, PM[]>;
|
|
35
34
|
};
|
|
36
|
-
readonly changeFeed: PubSub<[T[], "save" | "remove"]>;
|
|
37
|
-
readonly removeAndPublish: (items: Iterable<T>, events?: Iterable<Evt>) => Effect<never, never, void>;
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
35
|
+
abstract readonly changeFeed: PubSub<[T[], "save" | "remove"]>;
|
|
36
|
+
abstract readonly removeAndPublish: (items: Iterable<T>, events?: Iterable<Evt>) => Effect<never, never, void>;
|
|
37
|
+
}
|
|
38
|
+
export declare abstract class RepositoryBaseC1<T extends {
|
|
39
|
+
id: string;
|
|
40
|
+
}, PM extends {
|
|
41
|
+
id: string;
|
|
42
|
+
}, Evt, ItemType extends string> extends RepositoryBaseC<T, PM, Evt, ItemType> {
|
|
43
|
+
readonly itemType: ItemType;
|
|
44
|
+
constructor(itemType: ItemType);
|
|
45
|
+
}
|
|
46
|
+
export declare class RepositoryBaseC2<T extends {
|
|
47
|
+
id: string;
|
|
48
|
+
}, PM extends {
|
|
49
|
+
id: string;
|
|
50
|
+
}, Evt, ItemType extends string> extends RepositoryBaseC1<T, PM, Evt, ItemType> {
|
|
51
|
+
protected readonly impl: Repository<T, PM, Evt, ItemType>;
|
|
52
|
+
constructor(itemType: ItemType, impl: Repository<T, PM, Evt, ItemType>);
|
|
53
|
+
saveAndPublish: (items: Iterable<T>, events?: Iterable<Evt> | undefined) => import("effect/Effect").Effect<never, InvalidStateError | OptimisticConcurrencyException, void>;
|
|
54
|
+
removeAndPublish: (items: Iterable<T>, events?: Iterable<Evt> | undefined) => import("effect/Effect").Effect<never, never, void>;
|
|
55
|
+
find: (id: T["id"]) => import("effect/Effect").Effect<never, never, Opt<T>>;
|
|
56
|
+
all: import("effect/Effect").Effect<never, never, T[]>;
|
|
57
|
+
utils: {
|
|
58
|
+
mapReverse: (pm: PM, setEtag: (id: string, eTag: string | undefined) => void) => unknown;
|
|
59
|
+
parse: (a: unknown, env?: ParserEnv | undefined) => T;
|
|
60
|
+
all: import("effect/Effect").Effect<never, never, PM[]>;
|
|
61
|
+
filter: (filter: Filter<PM>, cursor?: {
|
|
62
|
+
limit?: number | undefined;
|
|
63
|
+
skip?: number | undefined;
|
|
64
|
+
} | undefined) => import("effect/Effect").Effect<never, never, PM[]>;
|
|
65
|
+
};
|
|
66
|
+
changeFeed: import("effect/PubSub").PubSub<[T[], "save" | "remove"]>;
|
|
67
|
+
}
|
|
69
68
|
/**
|
|
70
69
|
* A base implementation to create a repository.
|
|
71
70
|
*/
|
|
72
71
|
export declare function makeRepo<PM extends {
|
|
73
72
|
id: string;
|
|
74
73
|
_etag: string | undefined;
|
|
75
|
-
}, Evt =
|
|
74
|
+
}, Evt = never>(): <ItemType extends string, T extends {
|
|
76
75
|
id: string;
|
|
77
76
|
}, ConstructorInput, Api, Encoded extends {
|
|
78
77
|
id: string;
|
|
79
78
|
}>(name: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, Encoded, Api>, mapFrom: (pm: Omit<PM, "_etag">) => Encoded, mapTo: (e: Encoded, etag: string | undefined) => PM) => {
|
|
80
|
-
make: <R = never, E = never, R2 = never>(args: [Evt] extends [
|
|
81
|
-
publishEvents: (evt: readonly [Evt, ...Evt[]]) => Effect<R2, never, void>;
|
|
79
|
+
make: <R = never, E = never, R2 = never>(args: [Evt] extends [never] ? {
|
|
82
80
|
makeInitial?: import("effect/Effect").Effect<R, E, readonly T[]> | undefined;
|
|
83
81
|
config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
84
82
|
partitionValue?: ((a: PM) => string) | undefined;
|
|
85
83
|
}) | undefined;
|
|
86
84
|
} : {
|
|
85
|
+
publishEvents: (evt: readonly [Evt, ...Evt[]]) => Effect<R2, never, void>;
|
|
87
86
|
makeInitial?: import("effect/Effect").Effect<R, E, readonly T[]> | undefined;
|
|
88
87
|
config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
89
88
|
partitionValue?: ((a: PM) => string) | undefined;
|
|
@@ -114,7 +113,7 @@ export declare function makeRepo<PM extends {
|
|
|
114
113
|
value: A_1;
|
|
115
114
|
readonly S: PM;
|
|
116
115
|
};
|
|
117
|
-
}) => Where | readonly [Where, ...Where[]], mode?: "
|
|
116
|
+
}) => Where | readonly [Where, ...Where[]], mode?: "or" | "and" | undefined) => Filter<PM>;
|
|
118
117
|
};
|
|
119
118
|
/**
|
|
120
119
|
* only use this as a shortcut if you don't have the item already
|
|
@@ -165,72 +164,44 @@ export declare function makeStore<PM extends {
|
|
|
165
164
|
}>(name: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, E, Api>, mapTo: (e: E, etag: string | undefined) => PM) => <R = never, E_1 = never>(makeInitial?: import("effect/Effect").Effect<R, E_1, readonly T[]> | undefined, config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
166
165
|
partitionValue?: ((a: PM) => string) | undefined;
|
|
167
166
|
}) | undefined) => import("effect/Effect").Effect<StoreMaker | R, E_1, import("./Store.js").Store<PM, string>>;
|
|
168
|
-
|
|
167
|
+
type Repos<Service, T extends {
|
|
169
168
|
id: string;
|
|
170
|
-
|
|
171
|
-
}, Evt = unknown>() => <ItemType extends string, T extends {
|
|
172
|
-
id: string;
|
|
173
|
-
}, ConstructorInput, Api, E extends {
|
|
169
|
+
}, PM extends {
|
|
174
170
|
id: string;
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
makeInitial?:
|
|
179
|
-
config?:
|
|
180
|
-
partitionValue?: (
|
|
181
|
-
}
|
|
171
|
+
_etag: string | undefined;
|
|
172
|
+
}, Evt, ItemType extends string> = {
|
|
173
|
+
make<R = never, E = never, R2 = never>(args: [Evt] extends [never] ? {
|
|
174
|
+
makeInitial?: Effect<R, E, readonly T[]>;
|
|
175
|
+
config?: Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
176
|
+
partitionValue?: (a: PM) => string;
|
|
177
|
+
};
|
|
182
178
|
} : {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
179
|
+
publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect<R2, never, void>;
|
|
180
|
+
makeInitial?: Effect<R, E, readonly T[]>;
|
|
181
|
+
config?: Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
182
|
+
partitionValue?: (a: PM) => string;
|
|
183
|
+
};
|
|
184
|
+
}): Effect<StoreMaker | ContextMapContainer | R | R2, E, Repository<T, PM, Evt, ItemType>>;
|
|
188
185
|
where: ReturnType<typeof makeWhere<PM>>;
|
|
189
|
-
flatMap: <R1, E1, B>(f: (a: Service) =>
|
|
186
|
+
flatMap: <R1, E1, B>(f: (a: Service) => Effect<R1, E1, B>) => Effect<Service | R1, E1, B>;
|
|
190
187
|
makeLayer: (svc: Service) => Layer<never, never, Service>;
|
|
191
|
-
map: <
|
|
188
|
+
map: <B>(f: (a: Service) => B) => Effect<Service, never, B>;
|
|
192
189
|
};
|
|
190
|
+
export declare const RepositoryBaseImpl: <Service>() => <PM extends {
|
|
191
|
+
id: string;
|
|
192
|
+
_etag: string | undefined;
|
|
193
|
+
}, Evt = never>() => <ItemType extends string, T extends {
|
|
194
|
+
id: string;
|
|
195
|
+
}, ConstructorInput, Api, E extends {
|
|
196
|
+
id: string;
|
|
197
|
+
}>(itemType: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, E, Api>, mapFrom: (pm: Omit<PM, "_etag">) => E, mapTo: (e: E, etag: string | undefined) => PM) => (abstract new () => Omit<RepositoryBaseC1<T, PM, Evt, ItemType>, "impl">) & Tag<Service, Service> & Repos<Service, T, PM, Evt, ItemType>;
|
|
193
198
|
export declare const RepositoryDefaultImpl: <Service>() => <PM extends {
|
|
194
199
|
id: string;
|
|
195
200
|
_etag: string | undefined;
|
|
196
|
-
}, Evt =
|
|
201
|
+
}, Evt = never>() => <ItemType extends string, T extends {
|
|
197
202
|
id: string;
|
|
198
203
|
}, ConstructorInput, Api, E extends {
|
|
199
204
|
id: string;
|
|
200
|
-
}>(itemType: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, E, Api>, mapFrom: (pm: Omit<PM, "_etag">) => E, mapTo: (e: E, etag: string | undefined) => PM) => import("effect/Context").Tag<Service, Service> &
|
|
201
|
-
|
|
202
|
-
where: ReturnType<typeof makeWhere<PM>>;
|
|
203
|
-
flatMap: <R1, E1, B>(f: (a: Service) => import("effect/Effect").Effect<R1, E1, B>) => import("effect/Effect").Effect<Service | R1, E1, B>;
|
|
204
|
-
makeLayer: (svc: Service) => Layer<never, never, Service>;
|
|
205
|
-
map: <B_1>(f: (a: Service) => B_1) => import("effect/Effect").Effect<Service, never, B_1>;
|
|
206
|
-
repo: Repository<T, PM, Evt, ItemType>;
|
|
207
|
-
} & ([Evt] extends [object] ? {
|
|
208
|
-
make<R = never, E_1 = never, R2 = never>(args: {
|
|
209
|
-
publishEvents: (evt: readonly [Evt, ...Evt[]]) => import("effect/Effect").Effect<R2, never, void>;
|
|
210
|
-
makeInitial?: import("effect/Effect").Effect<R, E_1, readonly T[]> | undefined;
|
|
211
|
-
config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
212
|
-
partitionValue?: ((a: PM) => string) | undefined;
|
|
213
|
-
}) | undefined;
|
|
214
|
-
}): import("effect/Effect").Effect<StoreMaker | R | R2, E_1, Repository<T, PM, Evt, ItemType>>;
|
|
215
|
-
toLayer<R_1 = never, E_2 = never, R2_1 = never>(args: {
|
|
216
|
-
publishEvents: (evt: readonly [Evt, ...Evt[]]) => import("effect/Effect").Effect<R2_1, never, void>;
|
|
217
|
-
makeInitial?: import("effect/Effect").Effect<R_1, E_2, readonly T[]> | undefined;
|
|
218
|
-
config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
219
|
-
partitionValue?: ((a: PM) => string) | undefined;
|
|
220
|
-
}) | undefined;
|
|
221
|
-
}): import("effect/Layer").Layer<StoreMaker | R_1 | R2_1, E_2, Service>;
|
|
222
|
-
} : {
|
|
223
|
-
make<R_2 = never, E_3 = never>(args: {
|
|
224
|
-
makeInitial?: import("effect/Effect").Effect<R_2, E_3, readonly T[]> | undefined;
|
|
225
|
-
config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
226
|
-
partitionValue?: ((a: PM) => string) | undefined;
|
|
227
|
-
}) | undefined;
|
|
228
|
-
}): import("effect/Effect").Effect<StoreMaker | R_2, E_3, Repository<T, PM, Evt, ItemType>>;
|
|
229
|
-
toLayer<R_3 = never, E_4 = never>(args: {
|
|
230
|
-
makeInitial?: import("effect/Effect").Effect<R_3, E_4, readonly T[]> | undefined;
|
|
231
|
-
config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
|
|
232
|
-
partitionValue?: ((a: PM) => string) | undefined;
|
|
233
|
-
}) | undefined;
|
|
234
|
-
}): import("effect/Layer").Layer<StoreMaker | R_3, E_4, Service>;
|
|
235
|
-
});
|
|
205
|
+
}>(itemType: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, E, Api>, mapFrom: (pm: Omit<PM, "_etag">) => E, mapTo: (e: E, etag: string | undefined) => PM) => (abstract new (impl: Repository<T, PM, Evt, ItemType>) => RepositoryBaseC2<T, PM, Evt, ItemType>) & import("effect/Context").Tag<Service, Service> & Repos<Service, T, PM, Evt, ItemType>;
|
|
206
|
+
export {};
|
|
236
207
|
//# sourceMappingURL=RepositoryBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RepositoryBase.d.ts","sourceRoot":"","sources":["../../_src/services/RepositoryBase.ts"],"names":[],"mappings":";;;;;AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAG5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAGlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEpE;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"RepositoryBase.d.ts","sourceRoot":"","sources":["../../_src/services/RepositoryBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,48 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "effect/
|
|
2
|
-
import * as tsplus_module_2 from "effect/
|
|
3
|
-
import * as tsplus_module_3 from "
|
|
4
|
-
import * as tsplus_module_4 from "@effect-app/prelude/
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/
|
|
6
|
-
import * as tsplus_module_6 from "
|
|
7
|
-
import * as tsplus_module_7 from "@effect-app/core/
|
|
8
|
-
import * as tsplus_module_8 from "effect/Chunk";
|
|
9
|
-
import * as tsplus_module_9 from "
|
|
10
|
-
import * as tsplus_module_10 from "
|
|
11
|
-
import * as tsplus_module_11 from "effect/
|
|
12
|
-
import * as tsplus_module_12 from "effect/
|
|
13
|
-
import * as tsplus_module_13 from "@effect-app/core/
|
|
14
|
-
import * as tsplus_module_14 from "effect/
|
|
15
|
-
import * as tsplus_module_15 from "
|
|
16
|
-
import * as tsplus_module_16 from "@effect-app/
|
|
1
|
+
import * as tsplus_module_1 from "@effect-app/prelude/schema";
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/schema/custom/_api/condemn";
|
|
3
|
+
import * as tsplus_module_3 from "effect/Effect";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/prelude/_ext/misc";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/core/Array";
|
|
6
|
+
import * as tsplus_module_6 from "effect/Chunk";
|
|
7
|
+
import * as tsplus_module_7 from "@effect-app/core/Effect";
|
|
8
|
+
import * as tsplus_module_8 from "@effect-app/core/Chunk";
|
|
9
|
+
import * as tsplus_module_9 from "effect/ReadonlyArray";
|
|
10
|
+
import * as tsplus_module_10 from "effect/Option";
|
|
11
|
+
import * as tsplus_module_11 from "@effect-app/core/_ext/Iterable";
|
|
12
|
+
import * as tsplus_module_12 from "effect/PubSub";
|
|
13
|
+
import * as tsplus_module_13 from "@effect-app/core/Function";
|
|
14
|
+
import * as tsplus_module_14 from "@effect-app/infra/services/Repository";
|
|
15
|
+
import * as tsplus_module_15 from "effect/Layer";
|
|
16
|
+
import * as tsplus_module_16 from "@effect-app/prelude/service";
|
|
17
17
|
import { StoreMaker } from "./Store.js";
|
|
18
18
|
import { makeCodec } from "@effect-app/infra/api/codec";
|
|
19
19
|
import { makeFilters } from "@effect-app/infra/filter";
|
|
20
20
|
import { EParserFor } from "@effect-app/prelude/schema";
|
|
21
21
|
import { ContextMapContainer } from "./Store/ContextMapContainer.js";
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* @tsplus type Repository
|
|
24
24
|
*/
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
25
|
+
export class RepositoryBaseC {
|
|
26
|
+
}
|
|
27
|
+
export class RepositoryBaseC1 extends RepositoryBaseC {
|
|
28
|
+
constructor(itemType) {
|
|
29
|
+
super();
|
|
30
|
+
this.itemType = itemType;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export class RepositoryBaseC2 extends RepositoryBaseC1 {
|
|
34
|
+
constructor(itemType, impl) {
|
|
35
|
+
super(itemType);
|
|
36
|
+
this.impl = impl;
|
|
37
|
+
// makes super calls a compiler error, as it should
|
|
38
|
+
this.saveAndPublish = this.impl.saveAndPublish;
|
|
39
|
+
this.removeAndPublish = this.impl.removeAndPublish;
|
|
40
|
+
this.find = this.impl.find;
|
|
41
|
+
this.all = this.impl.all;
|
|
42
|
+
this.utils = this.impl.utils;
|
|
43
|
+
this.changeFeed = this.impl.changeFeed;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
45
46
|
/**
|
|
46
47
|
* A base implementation to create a repository.
|
|
47
48
|
*/
|
|
@@ -57,47 +58,47 @@ export function makeRepo() {
|
|
|
57
58
|
}
|
|
58
59
|
const mkStore = makeStore()(name, schema, mapTo);
|
|
59
60
|
function make(args) {
|
|
60
|
-
return
|
|
61
|
-
const pub = "publishEvents" in args ?
|
|
62
|
-
return
|
|
63
|
-
const allE =
|
|
64
|
-
const parse =
|
|
65
|
-
const all =
|
|
61
|
+
return tsplus_module_3.withLogSpan(tsplus_module_3.withSpan(tsplus_module_3.flatMap(mkStore(args.makeInitial, args.config), store => tsplus_module_3.flatMap(ContextMapContainer, cms => tsplus_module_3.flatMap(tsplus_module_3.context(), pubCfg => {
|
|
62
|
+
const pub = "publishEvents" in args ? tsplus_module_13.flow(args.publishEvents, (_) => tsplus_module_3.provide(_, pubCfg)) : () => tsplus_module_3.unit;
|
|
63
|
+
return tsplus_module_3.map(tsplus_module_12.unbounded(), changeFeed => {
|
|
64
|
+
const allE = tsplus_module_3.flatMap(store.all, (items) => tsplus_module_3.map(cms.get, ({ set }) => items.map((_) => mapReverse(_, set))));
|
|
65
|
+
const parse = tsplus_module_2.condemnDie(EParserFor(schema));
|
|
66
|
+
const all = tsplus_module_3.flatMap(allE, (_) => tsplus_module_11.ext_forEach(_, (_) => parse(_)));
|
|
66
67
|
function findE(id) {
|
|
67
|
-
return
|
|
68
|
-
.find(id), (items) =>
|
|
68
|
+
return tsplus_module_3.flatMap(store
|
|
69
|
+
.find(id), (items) => tsplus_module_3.map(cms.get, ({ set }) => tsplus_module_10.map(items, (_) => mapReverse(_, set))));
|
|
69
70
|
}
|
|
70
71
|
function find(id) {
|
|
71
|
-
return
|
|
72
|
+
return tsplus_module_7.flatMapOption(findE(id), tsplus_module_2.condemnDie(EParserFor(schema)));
|
|
72
73
|
}
|
|
73
|
-
const saveAllE = (a) =>
|
|
74
|
-
const items =
|
|
75
|
-
return
|
|
74
|
+
const saveAllE = (a) => tsplus_module_7.flatMapOption(tsplus_module_3.sync(() => tsplus_module_5.CollectionToNonEmptyReadonlyArray(a)), (a) => tsplus_module_3.flatMap(cms.get, ({ get, set }) => {
|
|
75
|
+
const items = tsplus_module_9.map(a, (_) => mapToPersistenceModel(_, get));
|
|
76
|
+
return tsplus_module_3.map(store.batchSet(items), ret => {
|
|
76
77
|
ret.forEach((_) => set(_.id, _._etag));
|
|
77
78
|
});
|
|
78
79
|
}));
|
|
79
|
-
const encode =
|
|
80
|
-
const saveAll = (a) => saveAllE(
|
|
80
|
+
const encode = tsplus_module_1.Encoder.for(schema);
|
|
81
|
+
const saveAll = (a) => saveAllE(tsplus_module_6.map(tsplus_module_5.ext_itToChunk(a), encode));
|
|
81
82
|
const saveAndPublish = (items, events = []) => {
|
|
82
|
-
const it =
|
|
83
|
-
return
|
|
83
|
+
const it = tsplus_module_5.ext_itToChunk(items);
|
|
84
|
+
return tsplus_module_3.zipRight(changeFeed.publish([tsplus_module_8.toArray(it), "save"]))(tsplus_module_3.zipRight(tsplus_module_7.flatMapOption(tsplus_module_3.sync(() => tsplus_module_5.CollectionToNonEmptyReadonlyArray(events))
|
|
84
85
|
// TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
|
|
85
86
|
, pub))(saveAll(it)));
|
|
86
87
|
};
|
|
87
88
|
function removeAndPublish(a, events = []) {
|
|
88
|
-
return
|
|
89
|
+
return tsplus_module_3.gen(function* ($) {
|
|
89
90
|
const { get, set } = yield* $(cms.get);
|
|
90
|
-
const it =
|
|
91
|
-
const items =
|
|
91
|
+
const it = tsplus_module_5.ext_itToChunk(a);
|
|
92
|
+
const items = tsplus_module_6.map(it, encode);
|
|
92
93
|
// TODO: we should have a batchRemove on store so the adapter can actually batch...
|
|
93
94
|
for (const e of items) {
|
|
94
95
|
yield* $(store.remove(mapToPersistenceModel(e, get)));
|
|
95
96
|
set(e.id, undefined);
|
|
96
97
|
}
|
|
97
|
-
yield* $(
|
|
98
|
+
yield* $(tsplus_module_7.flatMapOption(tsplus_module_3.sync(() => tsplus_module_5.CollectionToNonEmptyReadonlyArray(events))
|
|
98
99
|
// TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
|
|
99
100
|
, pub));
|
|
100
|
-
yield* $(changeFeed.publish([
|
|
101
|
+
yield* $(changeFeed.publish([tsplus_module_8.toArray(it), "remove"]));
|
|
101
102
|
});
|
|
102
103
|
}
|
|
103
104
|
const r = {
|
|
@@ -106,10 +107,10 @@ export function makeRepo() {
|
|
|
106
107
|
*/
|
|
107
108
|
utils: {
|
|
108
109
|
mapReverse,
|
|
109
|
-
parse:
|
|
110
|
-
filter:
|
|
111
|
-
.filter, (_) =>
|
|
112
|
-
all:
|
|
110
|
+
parse: tsplus_module_2.unsafe(tsplus_module_1.Parser.for(schema)),
|
|
111
|
+
filter: tsplus_module_4.flow(store
|
|
112
|
+
.filter, (_) => tsplus_module_3.tap(_, (items) => tsplus_module_3.map(cms.get, ({ set }) => items.forEach((_) => set(_.id, _._etag))))),
|
|
113
|
+
all: tsplus_module_3.tap(store.all, (items) => tsplus_module_3.map(cms.get, ({ set }) => items.forEach((_) => set(_.id, _._etag))))
|
|
113
114
|
},
|
|
114
115
|
changeFeed,
|
|
115
116
|
itemType: name,
|
|
@@ -133,7 +134,7 @@ export function makeRepo() {
|
|
|
133
134
|
* @tsplus fluent Repository removeById
|
|
134
135
|
*/
|
|
135
136
|
export function removeById(self, id) {
|
|
136
|
-
return
|
|
137
|
+
return tsplus_module_3.flatMap(tsplus_module_14.get(self, id), (_) => self.removeAndPublish([_]));
|
|
137
138
|
}
|
|
138
139
|
export function makeWhere() {
|
|
139
140
|
const f_ = makeFilters();
|
|
@@ -161,14 +162,14 @@ export function makeStore() {
|
|
|
161
162
|
const [_dec, encode] = makeCodec(schema);
|
|
162
163
|
function encodeToPM() {
|
|
163
164
|
const getEtag = () => undefined;
|
|
164
|
-
return
|
|
165
|
+
return tsplus_module_13.flow(encode, (v) => mapToPersistenceModel(v, getEtag));
|
|
165
166
|
}
|
|
166
167
|
function mapToPersistenceModel(e, getEtag) {
|
|
167
168
|
return mapTo(e, getEtag(e.id));
|
|
168
169
|
}
|
|
169
170
|
function makeStore(makeInitial, config) {
|
|
170
|
-
return
|
|
171
|
-
?
|
|
171
|
+
return tsplus_module_3.flatMap(StoreMaker, ({ make }) => tsplus_module_3.map(make(pluralize(name), makeInitial
|
|
172
|
+
? tsplus_module_3.withSpan((tsplus_module_3.map(makeInitial, (_) => _.map(encodeToPM()))), "Repository.makeInitial [effect-app/infra]")
|
|
172
173
|
: undefined, {
|
|
173
174
|
...config,
|
|
174
175
|
partitionValue: config?.partitionValue
|
|
@@ -181,24 +182,45 @@ export function makeStore() {
|
|
|
181
182
|
export const RepositoryBaseImpl = () => {
|
|
182
183
|
return () => (itemType, schema, mapFrom, mapTo) => {
|
|
183
184
|
const mkRepo = makeRepo()(itemType, schema, mapFrom, mapTo);
|
|
184
|
-
class Cls extends
|
|
185
|
+
class Cls extends RepositoryBaseC1 {
|
|
186
|
+
constructor() {
|
|
187
|
+
super(itemType);
|
|
188
|
+
}
|
|
189
|
+
static flatMap(f) {
|
|
190
|
+
return tsplus_module_3.flatMap(this, f);
|
|
191
|
+
}
|
|
192
|
+
static map(f) {
|
|
193
|
+
return tsplus_module_3.map(this, f);
|
|
194
|
+
}
|
|
195
|
+
static makeLayer(svc) {
|
|
196
|
+
return tsplus_module_15.succeed(this, svc);
|
|
197
|
+
}
|
|
185
198
|
}
|
|
186
199
|
Cls.make = mkRepo.make;
|
|
187
|
-
|
|
200
|
+
Cls.where = makeWhere();
|
|
201
|
+
return tsplus_module_16.assignTag()(Cls);
|
|
188
202
|
};
|
|
189
203
|
};
|
|
190
204
|
export const RepositoryDefaultImpl = () => {
|
|
191
205
|
return () => (itemType, schema, mapFrom, mapTo) => {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
return tsplus_module_2.effect(this)(tsplus_module_1.map(this
|
|
195
|
-
.make(args), (impl) => new this(impl)));
|
|
196
|
-
}
|
|
206
|
+
const mkRepo = makeRepo()(itemType, schema, mapFrom, mapTo);
|
|
207
|
+
class Cls extends RepositoryBaseC2 {
|
|
197
208
|
constructor(impl) {
|
|
198
|
-
super();
|
|
199
|
-
Object.assign(this, impl);
|
|
209
|
+
super(itemType, impl);
|
|
200
210
|
}
|
|
201
|
-
|
|
211
|
+
static flatMap(f) {
|
|
212
|
+
return tsplus_module_3.flatMap(this, f);
|
|
213
|
+
}
|
|
214
|
+
static map(f) {
|
|
215
|
+
return tsplus_module_3.map(this, f);
|
|
216
|
+
}
|
|
217
|
+
static makeLayer(svc) {
|
|
218
|
+
return tsplus_module_15.succeed(this, svc);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
Cls.make = mkRepo.make;
|
|
222
|
+
Cls.where = makeWhere();
|
|
223
|
+
return tsplus_module_16.assignTag()(Cls); // impl is missing, but its marked protected
|
|
202
224
|
};
|
|
203
225
|
};
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnlCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBS3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRXZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBRXBFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQVksRUFBRTtJQUMxQyxPQUFPLENBQ0wsUUFBa0IsRUFDbEIsRUFBRTtRQUNGLE1BQWUsZUFBZTtZQUE5QjtnQkFDVyxhQUFRLEdBQWEsUUFBUSxDQUFBO1lBK0J4QyxDQUFDO1lBVEMsTUFBTSxDQUFDLE9BQU8sQ0FBWSxDQUFvQztnQkFDNUQsT0FBTyx3QkFBZSxJQUF3QyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ3BFLENBQUM7WUFDRCxNQUFNLENBQUMsR0FBRyxDQUFJLENBQW9CO2dCQUNoQyxPQUFPLG9CQUFXLElBQXdDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDaEUsQ0FBQztZQUNELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBWTtnQkFDM0IsT0FBTyx3QkFBYyxJQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQ3JFLENBQUM7O1FBVGUscUJBQUssR0FBRyxTQUFTLEVBQU0sQUFBbEIsQ0FBa0I7UUFXekMsT0FBTyxnQkFBQSxTQUFTLEVBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0s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
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnlCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBS3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRXZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBRXBFOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixlQUFlO0NBMkJwQztBQUVELE1BQU0sT0FBZ0IsZ0JBS3BCLFNBQVEsZUFBcUM7SUFDN0MsWUFDa0IsUUFBa0I7UUFFbEMsS0FBSyxFQUFFLENBQUE7UUFGUyxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBR3BDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxnQkFDWCxTQUFRLGdCQUFzQztJQUU5QyxZQUNFLFFBQWtCLEVBQ0MsSUFBc0M7UUFFekQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRkksU0FBSSxHQUFKLElBQUksQ0FBa0M7UUFJM0QsbURBQW1EO1FBQzFDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUE7UUFDekMscUJBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTtRQUM3QyxTQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDckIsUUFBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBO1FBQ25CLFVBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUN2QixlQUFVLEdBQUcsSUFB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
|