@effect-app/infra 0.170.6 → 0.172.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 +34 -0
- package/_cjs/services/Operations/live.cjs +8 -9
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Repository/dsl.cjs +70 -0
- package/_cjs/services/Repository/dsl.cjs.map +1 -0
- package/_cjs/services/Repository/ext.cjs +217 -0
- package/_cjs/services/Repository/ext.cjs.map +1 -0
- package/_cjs/services/Repository/service.cjs +6 -0
- package/_cjs/services/Repository/service.cjs.map +1 -0
- package/_cjs/services/Repository.cjs +32 -252
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +173 -48
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +13 -14
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/ContextMapContainer.cjs +9 -10
- package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.cjs +2 -2
- package/_cjs/services/Store/utils.cjs +8 -9
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +1 -2
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +5 -6
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/api/express/schema/routing.ts +6 -6
- package/_src/services/Operations/live.ts +1 -1
- package/_src/services/Repository/dsl.ts +137 -0
- package/_src/services/Repository/ext.ts +707 -0
- package/_src/services/Repository/service.ts +12 -0
- package/_src/services/Repository.ts +3 -815
- package/_src/services/RepositoryBase.ts +621 -4
- package/_src/services/RequestContextContainer.ts +1 -1
- package/_src/services/Store/ContextMapContainer.ts +1 -1
- package/_src/services/Store/codeFilter.ts +2 -2
- package/_src/services/Store/utils.ts +9 -9
- package/_src/services/simpledb/diskdb.ts +1 -1
- package/_src/services/simpledb/simpledb.ts +1 -1
- package/dist/services/Operations/live.js +9 -10
- package/dist/services/QueueMaker/service.d.ts +2 -2
- package/dist/services/Repository/dsl.d.ts +51 -0
- package/dist/services/Repository/dsl.d.ts.map +1 -0
- package/dist/services/Repository/dsl.js +55 -0
- package/dist/services/Repository/ext.d.ts +324 -0
- package/dist/services/Repository/ext.d.ts.map +1 -0
- package/dist/services/Repository/ext.js +180 -0
- package/dist/services/Repository/service.d.ts +10 -0
- package/dist/services/Repository/service.d.ts.map +1 -0
- package/dist/services/Repository/service.js +2 -0
- package/dist/services/Repository.d.ts +3 -363
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +4 -217
- package/dist/services/RepositoryBase.d.ts +241 -6
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +164 -48
- package/dist/services/RequestContextContainer.js +14 -15
- package/dist/services/Store/ContextMapContainer.js +10 -11
- package/dist/services/Store/codeFilter.js +3 -3
- package/dist/services/Store/utils.js +10 -11
- package/dist/services/simpledb/cosmosdb.d.ts +2 -2
- package/dist/services/simpledb/diskdb.d.ts +1 -1
- package/dist/services/simpledb/diskdb.js +2 -3
- package/dist/services/simpledb/memdb.d.ts +1 -1
- package/dist/services/simpledb/redisdb.d.ts +5 -5
- package/dist/services/simpledb/shared.d.ts +5 -5
- package/dist/services/simpledb/simpledb.d.ts +2 -2
- package/dist/services/simpledb/simpledb.js +5 -6
- package/package.json +37 -7
|
@@ -39,23 +39,23 @@ export const makeUpdateETag =
|
|
|
39
39
|
export function codeFilter<E extends { id: string }, NE extends E>(filter: Filter<NE>) {
|
|
40
40
|
return (x: E) =>
|
|
41
41
|
filter.type === "new-kid"
|
|
42
|
-
? codeFilter3_(filter.build(), x) ? Option.some(x as unknown as NE) : Option.none
|
|
42
|
+
? codeFilter3_(filter.build(), x) ? Option.some(x as unknown as NE) : Option.none()
|
|
43
43
|
: filter.type === "startsWith"
|
|
44
44
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
45
|
? lowercaseIfString((x as any)[filter.by]).startsWith(filter.value.toLowerCase())
|
|
46
46
|
? Option.some(x as unknown as NE)
|
|
47
|
-
: Option.none
|
|
47
|
+
: Option.none()
|
|
48
48
|
: filter.type === "endsWith"
|
|
49
49
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
50
|
? lowercaseIfString((x as any)[filter.by]).endsWith(filter.value.toLowerCase())
|
|
51
51
|
? Option.some(x as unknown as NE)
|
|
52
|
-
: Option.none
|
|
52
|
+
: Option.none()
|
|
53
53
|
: filter.type === "contains"
|
|
54
54
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
55
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
56
56
|
? lowercaseIfString((x as any)[filter.by]).includes(filter.value.toLowerCase())
|
|
57
57
|
? Option.some(x as unknown as NE)
|
|
58
|
-
: Option.none
|
|
58
|
+
: Option.none()
|
|
59
59
|
: filter.type === "join_find"
|
|
60
60
|
? filter.keys.some((k) => {
|
|
61
61
|
const value = get(x, k) as Record<string, unknown>[]
|
|
@@ -66,7 +66,7 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
|
|
|
66
66
|
)
|
|
67
67
|
})
|
|
68
68
|
? Option.some(x as unknown as NE)
|
|
69
|
-
: Option.none
|
|
69
|
+
: Option.none()
|
|
70
70
|
// TODO: support mixed or/and
|
|
71
71
|
: filter.mode === "or"
|
|
72
72
|
? filter
|
|
@@ -110,7 +110,7 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
|
|
|
110
110
|
}
|
|
111
111
|
})
|
|
112
112
|
? Option.some(x as unknown as NE)
|
|
113
|
-
: Option.none
|
|
113
|
+
: Option.none()
|
|
114
114
|
: filter
|
|
115
115
|
.where
|
|
116
116
|
.every((p) => {
|
|
@@ -160,7 +160,7 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
|
|
|
160
160
|
}
|
|
161
161
|
})
|
|
162
162
|
? Option.some(x as unknown as NE)
|
|
163
|
-
: Option.none
|
|
163
|
+
: Option.none()
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
export function codeFilterJoinSelect<E extends { id: string }, NE>(
|
|
@@ -178,10 +178,10 @@ export function codeFilterJoinSelect<E extends { id: string }, NE>(
|
|
|
178
178
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
179
179
|
compare((v as any)[filter.valueKey], filter.value)
|
|
180
180
|
? Option.some({ ...v, _rootId: x.id })
|
|
181
|
-
: Option.none
|
|
181
|
+
: Option.none()
|
|
182
182
|
)
|
|
183
183
|
)
|
|
184
|
-
: Option.none
|
|
184
|
+
: Option.none()
|
|
185
185
|
})
|
|
186
186
|
.flatMap((_) => _)
|
|
187
187
|
}
|
|
@@ -133,7 +133,7 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
133
133
|
function tryRead(filePath: string) {
|
|
134
134
|
return fu
|
|
135
135
|
.fileExists(filePath)
|
|
136
|
-
.flatMap((exists) => !exists ? Effect.sync(() => Option.none) : readFile(filePath).map(Option.some))
|
|
136
|
+
.flatMap((exists) => !exists ? Effect.sync(() => Option.none()) : readFile(filePath).map(Option.some))
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
function getFilename(type: string, id: string) {
|
|
@@ -90,7 +90,7 @@ export function store<R, E, R2, E2, TKey extends string, EA, A extends DBRecord<
|
|
|
90
90
|
c
|
|
91
91
|
.find(record.id)
|
|
92
92
|
.mapOpt((x) => x.version)
|
|
93
|
-
.flatMap((_) => _.match({ onNone: () => save(record, Option.none), onSome: confirmVersionAndSave(record) }))
|
|
93
|
+
.flatMap((_) => _.match({ onNone: () => save(record, Option.none()), onSome: confirmVersionAndSave(record) }))
|
|
94
94
|
.tap((r) => c.set(record.id, r))
|
|
95
95
|
.map((r) => r.data)
|
|
96
96
|
)
|
|
@@ -7,11 +7,10 @@ import * as tsplus_module_6 from "effect/Exit";
|
|
|
7
7
|
import * as tsplus_module_7 from "effect/Cause";
|
|
8
8
|
import * as tsplus_module_8 from "@effect-app/prelude/schema";
|
|
9
9
|
import * as tsplus_module_9 from "@effect/schema/Parser";
|
|
10
|
-
import * as tsplus_module_10 from "@effect-app/
|
|
11
|
-
import * as tsplus_module_11 from "
|
|
12
|
-
import * as tsplus_module_12 from "effect/
|
|
13
|
-
import * as tsplus_module_13 from "effect/
|
|
14
|
-
import * as tsplus_module_14 from "effect/Layer";
|
|
10
|
+
import * as tsplus_module_10 from "@effect-app/prelude/_ext/misc";
|
|
11
|
+
import * as tsplus_module_11 from "effect/Duration";
|
|
12
|
+
import * as tsplus_module_12 from "effect/Schedule";
|
|
13
|
+
import * as tsplus_module_13 from "effect/Layer";
|
|
15
14
|
import { reportError } from "@effect-app/infra/errorReporter";
|
|
16
15
|
import { Failure, Operation, OperationId, Success } from "@effect-app/prelude/Operations";
|
|
17
16
|
import { Operations } from "./service.js";
|
|
@@ -55,7 +54,7 @@ const make = tsplus_module_1.sync(() => {
|
|
|
55
54
|
: tsplus_module_3.flatMap(tsplus_module_7.failureOption(exit
|
|
56
55
|
.cause), (_) => typeof _ === "object" && _ !== null && "message" in _ && tsplus_module_9.is(tsplus_module_8.NonEmptyString2k)(_.message)
|
|
57
56
|
? tsplus_module_3.some(_.message)
|
|
58
|
-
:
|
|
57
|
+
: tsplus_module_3.none())
|
|
59
58
|
.value ?? null
|
|
60
59
|
})
|
|
61
60
|
});
|
|
@@ -72,7 +71,7 @@ const make = tsplus_module_1.sync(() => {
|
|
|
72
71
|
return {
|
|
73
72
|
cleanup,
|
|
74
73
|
register: makeOp
|
|
75
|
-
.tap((id) =>
|
|
74
|
+
.tap((id) => tsplus_module_10.annotateLogscoped("operationId", id)
|
|
76
75
|
.andThen(tsplus_module_1.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit)))),
|
|
77
76
|
find: findOp,
|
|
78
77
|
update
|
|
@@ -85,9 +84,9 @@ const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.schedule(tsplus_m
|
|
|
85
84
|
else {
|
|
86
85
|
return reportAppError(_.cause);
|
|
87
86
|
}
|
|
88
|
-
}),
|
|
87
|
+
}), tsplus_module_12.fixed(tsplus_module_11.minutes(1))));
|
|
89
88
|
/**
|
|
90
89
|
* @tsplus static Operations.Ops Live
|
|
91
90
|
*/
|
|
92
|
-
export const Live =
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
export const Live = tsplus_module_13.provideMerge(tsplus_module_13.scopedDiscard(cleanupLoop), tsplus_module_13.effect(Operations)(make));
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9saXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUE7QUFFeEQsTUFBTSxJQUFJLEdBQUcscUJBQVksR0FBZSxFQUFFO0lBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFBO0lBQzdDLE1BQU0sTUFBTSxHQUFHLHFCQUFZLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXBELE1BQU0sT0FBTyxHQUFHLHlCQUFBLHFCQUNSLEdBQUcsRUFBRTtRQUNULE1BQU0sTUFBTSxHQUFHLDZCQUFBLElBQUksSUFBSSxFQUFFLEVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDckMsc0RBQUEsR0FBRzthQUNBLE9BQU8sRUFBRSxHQUVELENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRyw2QkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDbkYsSUFBSSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDaEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFD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
|
|
@@ -17,8 +17,8 @@ export declare const QueueMaker: QueueMakerOps;
|
|
|
17
17
|
export declare const QueueMeta: import("@effect-app/schema").Schema<{
|
|
18
18
|
readonly requestContext: RequestContext;
|
|
19
19
|
readonly span?: {
|
|
20
|
-
readonly traceId: string;
|
|
21
20
|
readonly spanId: string;
|
|
21
|
+
readonly traceId: string;
|
|
22
22
|
readonly sampled?: boolean | undefined;
|
|
23
23
|
} | undefined;
|
|
24
24
|
}, {
|
|
@@ -45,8 +45,8 @@ export declare const QueueMeta: import("@effect-app/schema").Schema<{
|
|
|
45
45
|
readonly namespace?: string | undefined;
|
|
46
46
|
};
|
|
47
47
|
readonly span?: {
|
|
48
|
-
readonly traceId: string;
|
|
49
48
|
readonly spanId: string;
|
|
49
|
+
readonly traceId: string;
|
|
50
50
|
readonly sampled?: boolean | undefined;
|
|
51
51
|
} | undefined;
|
|
52
52
|
}, never>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Pure, PureEnvEnv } from "@effect-app/prelude/Pure";
|
|
2
|
+
import { Effect } from "effect/Effect";
|
|
3
|
+
import { NonEmptyReadonlyArray } from "effect/ReadonlyArray";
|
|
4
|
+
import type { FixEnv, PureLogT } from "@effect-app/prelude/Pure";
|
|
5
|
+
export interface PureDSL<S, S2, W> {
|
|
6
|
+
get: ReturnType<typeof Pure.get<S>>;
|
|
7
|
+
set: typeof Pure.set<S2>;
|
|
8
|
+
log: (...w: W[]) => PureLogT<W>;
|
|
9
|
+
}
|
|
10
|
+
export declare const AnyPureDSL: PureDSL<any, any, any>;
|
|
11
|
+
export type AllDSL<T, Evt> = (<R, A, E, S1 extends T, S2 extends T>(pure: (dsl: PureDSL<S1[], S2[], Evt>) => Effect<A, E, R>) => Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>) & AllDSLExt<T, Evt>;
|
|
12
|
+
/**
|
|
13
|
+
* @tsplus type DSLExt
|
|
14
|
+
*/
|
|
15
|
+
export interface AllDSLExt<T, Evt> {
|
|
16
|
+
modify: <R, E, A, S1 extends T, S2 extends T>(pure: (items: S1[], dsl: PureDSL<S1[], S2[], Evt>) => Effect<A, E, R>) => Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>;
|
|
17
|
+
update: <R, E, S1 extends T, S2 extends T>(pure: (items: S1[], log: (...evt: Evt[]) => PureLogT<Evt>) => Effect<S2[], E, R>) => Effect<S2[], E, FixEnv<R, Evt, S1[], S2[]>>;
|
|
18
|
+
}
|
|
19
|
+
export declare function makeAllDSL<T, Evt>(): AllDSL<T, Evt>;
|
|
20
|
+
export type OneDSL<T, Evt> = (<R, A, E, S1 extends T, S2 extends T>(pure: (dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>) & OneDSLExt<T, Evt>;
|
|
21
|
+
/**
|
|
22
|
+
* @tsplus type DSLExt
|
|
23
|
+
*/
|
|
24
|
+
export interface OneDSLExt<T, Evt> {
|
|
25
|
+
modify: <R, E, A, S1 extends T, S2 extends T>(pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>) => Effect<A, E, FixEnv<R, Evt, S1, S2> | PureEnvEnv<Evt, S1, S1>>;
|
|
26
|
+
update: <R, E, S1 extends T, S2 extends T>(pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => Effect<S2, E, FixEnv<R, Evt, S1, S2>>) => Effect<S2, E, FixEnv<R, Evt, S1, S2>>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @tsplus fluent DSLExt updateWith
|
|
30
|
+
* @tsplus location "@effect-app/infra/services/Repository/dsl"
|
|
31
|
+
*/
|
|
32
|
+
export declare function updateWithOne<T, Evt, S1 extends T, S2 extends T>(self: OneDSL<T, Evt>, upd: (item: S1) => S2): import("effect/Effect").Effect<S2, never, import("@effect-app/prelude/Pure").PureEnvEnv<Evt, S1, S2>>;
|
|
33
|
+
/**
|
|
34
|
+
* @tsplus fluent DSLExt updateWith
|
|
35
|
+
* @tsplus location "@effect-app/infra/services/Repository/dsl"
|
|
36
|
+
*/
|
|
37
|
+
export declare function updateWith<T, Evt, S1 extends T, S2 extends T>(self: AllDSL<T, Evt>, upd: (item: S1[]) => S2[]): import("effect/Effect").Effect<S2[], never, import("@effect-app/prelude/Pure").PureEnvEnv<Evt, S1[], S2[]>>;
|
|
38
|
+
export declare function makeOneDSL<T, Evt>(): OneDSL<T, Evt>;
|
|
39
|
+
export declare function makeDSL<S1, S2, Evt>(): (<R, A, E>(pure: (dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, R>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>) & {
|
|
40
|
+
modify: <R_1, E_1, A_1>(pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => import("effect/Effect").Effect<A_1, E_1, R_1>) => import("effect/Effect").Effect<A_1, E_1, FixEnv<R_1, Evt, S1, S2>>;
|
|
41
|
+
update: <R_2, E_2>(pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => import("effect/Effect").Effect<S2, E_2, R_2>) => import("effect/Effect").Effect<S2, E_2, FixEnv<R_2, Evt, S1, S2>>;
|
|
42
|
+
};
|
|
43
|
+
export interface DSLExt<S1, S2, Evt> extends ReturnType<typeof makeDSL<S1, S2, Evt>> {
|
|
44
|
+
}
|
|
45
|
+
export declare function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>): (items: Iterable<T>) => import("effect/Effect").Effect<import("effect/Option").Option<A>, E, R>;
|
|
46
|
+
/**
|
|
47
|
+
* @tsplus fluent Iterable ifAny
|
|
48
|
+
* @tsplus location "@effect-app/infra/services/Repository/dsl"
|
|
49
|
+
*/
|
|
50
|
+
export declare function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>): import("effect/Effect").Effect<import("effect/Option").Option<A>, E, R>;
|
|
51
|
+
//# sourceMappingURL=dsl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../../_src/services/Repository/dsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as tsplus_module_1 from "@effect-app/prelude/Pure";
|
|
2
|
+
import * as tsplus_module_2 from "effect/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/core/Array";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/core/Effect";
|
|
5
|
+
export const AnyPureDSL = {
|
|
6
|
+
get: tsplus_module_1.get(),
|
|
7
|
+
set: tsplus_module_1.set,
|
|
8
|
+
log: (...evt) => tsplus_module_1.logMany(evt)
|
|
9
|
+
};
|
|
10
|
+
const anyDSL = makeDSL();
|
|
11
|
+
export function makeAllDSL() {
|
|
12
|
+
const dsl = anyDSL;
|
|
13
|
+
return dsl;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @tsplus fluent DSLExt updateWith
|
|
17
|
+
*/
|
|
18
|
+
export function updateWithOne(self, upd) {
|
|
19
|
+
return self.update((_) => tsplus_module_2.sync(() => upd(_)));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @tsplus fluent DSLExt updateWith
|
|
23
|
+
*/
|
|
24
|
+
export function updateWith(self, upd) {
|
|
25
|
+
return self.update((_) => tsplus_module_2.sync(() => upd(_)));
|
|
26
|
+
}
|
|
27
|
+
export function makeOneDSL() {
|
|
28
|
+
return anyDSL;
|
|
29
|
+
}
|
|
30
|
+
export function makeDSL() {
|
|
31
|
+
const dsl = AnyPureDSL;
|
|
32
|
+
function modify(pure) {
|
|
33
|
+
return tsplus_module_2.flatMap(dsl.get, (items) => pure(items, dsl));
|
|
34
|
+
}
|
|
35
|
+
function update(pure) {
|
|
36
|
+
return tsplus_module_2.flatMap(dsl.get, (items) => pure(items, dsl.log).tap(dsl.set));
|
|
37
|
+
}
|
|
38
|
+
function withDSL(pure) {
|
|
39
|
+
return pure(AnyPureDSL);
|
|
40
|
+
}
|
|
41
|
+
return Object.assign(withDSL, {
|
|
42
|
+
modify,
|
|
43
|
+
update
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function ifAny(fn) {
|
|
47
|
+
return (items) => tsplus_module_4.flatMapOption(tsplus_module_2.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(items)), fn);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @tsplus fluent Iterable ifAny
|
|
51
|
+
*/
|
|
52
|
+
export function ifAny_(items, fn) {
|
|
53
|
+
return tsplus_module_4.flatMapOption(tsplus_module_2.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(items)), fn);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9SZXBvc2l0b3J5L2RzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBUUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUEyQjtJQUNoRCxHQUFHLEVBQUUscUJBQVU7SUFDZixHQUFHLHFCQUFVO0lBQ2IsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFVLEVBQUUsRUFBRSxDQUFDLHdCQUFhLEdBQUcsQ0FBQztDQUMxQyxDQUFBO0FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFpQixDQUFBO0FBb0J2QyxNQUFNLFVBQVUsVUFBVTtJQUN4QixNQUFNLEdBQUcsR0FBbUIsTUFBTSxDQUFBO0lBQ2xDLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQW9CRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQXFDLElBQW9CLEVBQUUsR0FBcUI7SUFDM0csT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBSyxFQUFFLEVBQUUsQ0FBQyxxQkFBWSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzFELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLElBQW9CLEVBQ3BCLEdBQXlCO0lBRXpCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU8sRUFBRSxFQUFFLENBQUMscUJBQVksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUM1RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQXlCLFVBQVUsQ0FBQTtJQUU1QyxTQUFTLE1BQU0sQ0FLYixJQUdvQjtRQUVwQixPQUFPLHdCQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQVEsQ0FBQTtJQUM1RCxDQUFDO0lBRUQsU0FBUyxNQUFNLENBSWIsSUFHcUI7UUFFckIsT0FBTyx3QkFBQSxHQUFHLENBQUMsR0FBRyxFQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFRLENBQUE7SUFDN0UsQ0FBQztJQUVELFNBQVMsT0FBTyxDQUtkLElBQW9EO1FBRXBELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBUSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLE9BQU8sRUFDUDtRQUNFLE1BQU07UUFDTixNQUFNO0tBQ1AsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQUlELE1BQU0sVUFBVSxLQUFLLENBQWEsRUFBd0Q7SUFDeEYsT0FBTyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLDhCQUFBLHFCQUFZLEdBQUcsRUFBRSxtREFBQyxLQUFLLENBQWdCLENBQUMsRUFBWSxFQUFFLENBQUMsQ0FBQTtBQUN4RixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFhLEtBQWtCLEVBQUUsRUFBd0Q7SUFDN0csT0FBTyw4QkFBQSxxQkFBWSxHQUFHLEVBQUUsbURBQUMsS0FBSyxDQUFnQixDQUFDLEVBQVksRUFBRSxDQUFDLENBQUE7QUFDaEUsQ0FBQyJ9
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { Effect } from "effect/Effect";
|
|
2
|
+
import { Option } from "@effect-app/core/Option";
|
|
3
|
+
import { NonEmptyReadonlyArray, NonEmptyArray } from "effect/ReadonlyArray";
|
|
4
|
+
import { PureEnv } from "@effect-app/prelude/Pure";
|
|
5
|
+
import type { FixEnv } from "@effect-app/prelude/Pure";
|
|
6
|
+
import type { InvalidStateError, OptimisticConcurrencyException } from "../../errors.js";
|
|
7
|
+
import { NotFoundError } from "../../errors.js";
|
|
8
|
+
import type { Filter, PersistenceModelType } from "../../services/Store.js";
|
|
9
|
+
import type { RepositoryBaseC } from "../RepositoryBase.js";
|
|
10
|
+
import type { QueryBuilder } from "../Store/filterApi/query.js";
|
|
11
|
+
/**
|
|
12
|
+
* @tsplus fluent Repository get
|
|
13
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
14
|
+
*/
|
|
15
|
+
export declare function get<T extends {
|
|
16
|
+
id: unknown;
|
|
17
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"]): import("effect/Effect").Effect<T, NotFoundError<ItemType>, never>;
|
|
18
|
+
/**
|
|
19
|
+
* @tsplus getter Repository log
|
|
20
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
21
|
+
*/
|
|
22
|
+
export declare function log<T extends {
|
|
23
|
+
id: unknown;
|
|
24
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(_: RepositoryBaseC<T, PM, Evt, ItemType>): (evt: Evt) => import("@effect-app/prelude/Pure").PureLogT<any>;
|
|
25
|
+
/**
|
|
26
|
+
* TODO: project inside the db.
|
|
27
|
+
* @tsplus fluent Repository projectEffect
|
|
28
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
29
|
+
*/
|
|
30
|
+
export declare function projectEffect<T extends {
|
|
31
|
+
id: unknown;
|
|
32
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S = PM>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
33
|
+
filter?: Filter<PM> | undefined;
|
|
34
|
+
collect?: ((t: PM) => Option<S>) | undefined;
|
|
35
|
+
limit?: number | undefined;
|
|
36
|
+
skip?: number | undefined;
|
|
37
|
+
}, E, R>): Effect<S[], E, R>;
|
|
38
|
+
export declare function projectEffect<T extends {
|
|
39
|
+
id: unknown;
|
|
40
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, U extends keyof PM, S = PM>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
41
|
+
filter?: QueryBuilder<PM> | undefined;
|
|
42
|
+
collect?: ((t: PM) => Option<S>) | undefined;
|
|
43
|
+
limit?: number | undefined;
|
|
44
|
+
skip?: number | undefined;
|
|
45
|
+
}, E, R>): Effect<Pick<PM, U>[], E, R>;
|
|
46
|
+
/**
|
|
47
|
+
* TODO: project inside the db.
|
|
48
|
+
* @tsplus fluent Repository project
|
|
49
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
50
|
+
*/
|
|
51
|
+
export declare function project<T extends {
|
|
52
|
+
id: unknown;
|
|
53
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S = PM>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
54
|
+
filter?: Filter<PM>;
|
|
55
|
+
collect?: (t: PM) => Option<S>;
|
|
56
|
+
limit?: number;
|
|
57
|
+
skip?: number;
|
|
58
|
+
}): Effect<S[]>;
|
|
59
|
+
export declare function project<T extends {
|
|
60
|
+
id: unknown;
|
|
61
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, U extends keyof PM>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
62
|
+
filter?: QueryBuilder<PM>;
|
|
63
|
+
select: NonEmptyReadonlyArray<U>;
|
|
64
|
+
limit?: number;
|
|
65
|
+
skip?: number;
|
|
66
|
+
}): Effect<Pick<PM, U>[]>;
|
|
67
|
+
/**
|
|
68
|
+
* TODO: count inside the db.
|
|
69
|
+
* @tsplus fluent Repository project
|
|
70
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
71
|
+
*/
|
|
72
|
+
export declare function count<T extends {
|
|
73
|
+
id: unknown;
|
|
74
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, filter?: Filter<PM>): import("effect/Effect").Effect<number & import("@effect-app/schema").NonNegativeIntBrand, never, never>;
|
|
75
|
+
/**
|
|
76
|
+
* @tsplus fluent Repository queryEffect
|
|
77
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
78
|
+
*/
|
|
79
|
+
export declare function queryEffect<T extends {
|
|
80
|
+
id: unknown;
|
|
81
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
82
|
+
filter?: Filter<PM>;
|
|
83
|
+
collect?: (t: T) => Option<S>;
|
|
84
|
+
limit?: number;
|
|
85
|
+
skip?: number;
|
|
86
|
+
}, E, R>): import("effect/Effect").Effect<S[], E, R>;
|
|
87
|
+
/**
|
|
88
|
+
* @tsplus fluent Repository queryOneEffect
|
|
89
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
90
|
+
*/
|
|
91
|
+
export declare function queryOneEffect<T extends {
|
|
92
|
+
id: unknown;
|
|
93
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
94
|
+
filter?: Filter<PM>;
|
|
95
|
+
}, E, R>): Effect<T, E | NotFoundError<ItemType>, R>;
|
|
96
|
+
export declare function queryOneEffect<T extends {
|
|
97
|
+
id: unknown;
|
|
98
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
99
|
+
filter?: Filter<PM>;
|
|
100
|
+
collect: (t: T) => Option<S>;
|
|
101
|
+
}, E, R>): Effect<S, E | NotFoundError<ItemType>, R>;
|
|
102
|
+
/**
|
|
103
|
+
* @tsplus fluent Repository query
|
|
104
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
105
|
+
*/
|
|
106
|
+
export declare function query<T extends {
|
|
107
|
+
id: unknown;
|
|
108
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
109
|
+
filter?: Filter<PM>;
|
|
110
|
+
collect?: (t: T) => Option<S>;
|
|
111
|
+
limit?: number;
|
|
112
|
+
skip?: number;
|
|
113
|
+
}): import("effect/Effect").Effect<S[], never, never>;
|
|
114
|
+
/**
|
|
115
|
+
* @tsplus fluent Repository queryOne
|
|
116
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
117
|
+
*/
|
|
118
|
+
export declare function queryOne<T extends {
|
|
119
|
+
id: unknown;
|
|
120
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
121
|
+
filter?: Filter<PM>;
|
|
122
|
+
collect: (t: T) => Option<S>;
|
|
123
|
+
}): Effect<S, NotFoundError<ItemType>>;
|
|
124
|
+
export declare function queryOne<T extends {
|
|
125
|
+
id: unknown;
|
|
126
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
127
|
+
filter?: Filter<PM>;
|
|
128
|
+
}): Effect<T, NotFoundError<ItemType>>;
|
|
129
|
+
/**
|
|
130
|
+
* @tsplus fluent Repository queryAndSaveOnePureEffect
|
|
131
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
132
|
+
*/
|
|
133
|
+
export declare function queryAndSaveOnePureEffect<T extends {
|
|
134
|
+
id: unknown;
|
|
135
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
136
|
+
filter: Filter<PM>;
|
|
137
|
+
collect: (t: T) => Option<S>;
|
|
138
|
+
limit?: number;
|
|
139
|
+
skip?: number;
|
|
140
|
+
}, E, R>): <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S, S2>>) => Effect<A, InvalidStateError | OptimisticConcurrencyException | E | E2 | NotFoundError<ItemType>, R | Exclude<R2, {
|
|
141
|
+
env: PureEnv<Evt, S, S2>;
|
|
142
|
+
}>>;
|
|
143
|
+
export declare function queryAndSaveOnePureEffect<T extends {
|
|
144
|
+
id: unknown;
|
|
145
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
146
|
+
filter: Filter<PM>;
|
|
147
|
+
}, E, R>): <R2, A, E2, T2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, T, T2>>) => Effect<A, InvalidStateError | OptimisticConcurrencyException | E | E2 | NotFoundError<ItemType>, R | Exclude<R2, {
|
|
148
|
+
env: PureEnv<Evt, T, T2>;
|
|
149
|
+
}>>;
|
|
150
|
+
/**
|
|
151
|
+
* @tsplus fluent Repository queryAndSaveOnePure
|
|
152
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
153
|
+
*/
|
|
154
|
+
export declare function queryAndSaveOnePure<T extends {
|
|
155
|
+
id: unknown;
|
|
156
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
157
|
+
filter: Filter<PM>;
|
|
158
|
+
collect: (t: T) => Option<S>;
|
|
159
|
+
limit?: number;
|
|
160
|
+
skip?: number;
|
|
161
|
+
}): <R2, A, E2, S2>(pure: Effect<A, E2, FixEnv<R2, Evt, S, S2>>) => Effect<A, InvalidStateError | OptimisticConcurrencyException | E2 | NotFoundError<ItemType>, Exclude<R2, {
|
|
162
|
+
env: PureEnv<Evt, S, S2>;
|
|
163
|
+
}>>;
|
|
164
|
+
export declare function queryAndSaveOnePure<T extends {
|
|
165
|
+
id: unknown;
|
|
166
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
167
|
+
filter: Filter<PM>;
|
|
168
|
+
}): <R2, A, E2, T2>(pure: Effect<A, E2, FixEnv<R2, Evt, T, T2>>) => Effect<A, InvalidStateError | OptimisticConcurrencyException | E2 | NotFoundError<ItemType>, Exclude<R2, {
|
|
169
|
+
env: PureEnv<Evt, T, T2>;
|
|
170
|
+
}>>;
|
|
171
|
+
/**
|
|
172
|
+
* @tsplus fluent Repository queryAndSavePureEffect
|
|
173
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
174
|
+
*/
|
|
175
|
+
export declare function queryAndSavePureEffect<T extends {
|
|
176
|
+
id: unknown;
|
|
177
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
178
|
+
filter: Filter<PM>;
|
|
179
|
+
collect?: (t: T) => Option<S>;
|
|
180
|
+
limit?: number;
|
|
181
|
+
skip?: number;
|
|
182
|
+
}, E, R>): <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E | E2, R | Exclude<R2, {
|
|
183
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S[], S2[]>;
|
|
184
|
+
}>>;
|
|
185
|
+
/**
|
|
186
|
+
* @tsplus fluent Repository queryAndSavePure
|
|
187
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
188
|
+
*/
|
|
189
|
+
export declare function queryAndSavePure<T extends {
|
|
190
|
+
id: unknown;
|
|
191
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
192
|
+
filter: Filter<PM>;
|
|
193
|
+
collect?: (t: T) => Option<S>;
|
|
194
|
+
limit?: number;
|
|
195
|
+
skip?: number;
|
|
196
|
+
}): <R2, A, E2, S2 extends T>(pure: import("effect/Effect").Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E2, Exclude<R2, {
|
|
197
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S[], S2[]>;
|
|
198
|
+
}>>;
|
|
199
|
+
/**
|
|
200
|
+
* @tsplus getter Repository saveManyWithPure
|
|
201
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
202
|
+
*/
|
|
203
|
+
export declare function saveManyWithPure<T extends {
|
|
204
|
+
id: unknown;
|
|
205
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>): <R, A, E, S1 extends T, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>) => (items: Iterable<S1>) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
|
|
206
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1[], S2[]>;
|
|
207
|
+
}>>;
|
|
208
|
+
/**
|
|
209
|
+
* @tsplus fluent Repository byIdAndSaveWithPure
|
|
210
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
211
|
+
*/
|
|
212
|
+
export declare function byIdAndSaveWithPure<T extends {
|
|
213
|
+
id: unknown;
|
|
214
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"]): <R, A, E, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, T, S2>>) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E | NotFoundError<ItemType>, Exclude<R, {
|
|
215
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, T, S2>;
|
|
216
|
+
}>>;
|
|
217
|
+
/**
|
|
218
|
+
* NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
|
|
219
|
+
* @tsplus getter Repository handleByIdAndSaveWithPure
|
|
220
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
221
|
+
*/
|
|
222
|
+
export declare function handleByIdAndSaveWithPure<T extends {
|
|
223
|
+
id: unknown;
|
|
224
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>): <Req extends {
|
|
225
|
+
id: T["id"];
|
|
226
|
+
}, Context, R, A, E, S2 extends T>(pure: (req: Req, ctx: Context) => Effect<A, E, FixEnv<R, Evt, T, S2>>) => (req: Req, ctx: Context) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E | NotFoundError<ItemType>, Exclude<R, {
|
|
227
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, T, S2>;
|
|
228
|
+
}>>;
|
|
229
|
+
/**
|
|
230
|
+
* @tsplus fluent Repository saveManyWithPure_
|
|
231
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
232
|
+
*/
|
|
233
|
+
export declare function saveManyWithPure_<R, T extends {
|
|
234
|
+
id: unknown;
|
|
235
|
+
}, PM extends PersistenceModelType<string>, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>): import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
|
|
236
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1[], S2[]>;
|
|
237
|
+
}>>;
|
|
238
|
+
/**
|
|
239
|
+
* @tsplus fluent Repository saveWithPure_
|
|
240
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
241
|
+
*/
|
|
242
|
+
export declare function saveWithPure_<R, T extends {
|
|
243
|
+
id: unknown;
|
|
244
|
+
}, PM extends PersistenceModelType<string>, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, item: S1, pure: Effect<A, E, FixEnv<R, Evt, S1, S2>>): import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
|
|
245
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1, S2>;
|
|
246
|
+
}>>;
|
|
247
|
+
export declare function saveAllWithEffectInt<T extends {
|
|
248
|
+
id: unknown;
|
|
249
|
+
}, PM extends PersistenceModelType<string>, P extends T, Evt, ItemType extends string, R, E, A>(self: RepositoryBaseC<T, PM, Evt, ItemType>, gen: Effect<readonly [Iterable<P>, Iterable<Evt>, A], E, R>): import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E, R>;
|
|
250
|
+
/**
|
|
251
|
+
* @tsplus fluent Repository queryAndSavePureEffectBatched
|
|
252
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
253
|
+
*/
|
|
254
|
+
export declare function queryAndSavePureEffectBatched<T extends {
|
|
255
|
+
id: unknown;
|
|
256
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
|
|
257
|
+
filter: Filter<PM>;
|
|
258
|
+
collect?: (t: T) => Option<S>;
|
|
259
|
+
limit?: number;
|
|
260
|
+
skip?: number;
|
|
261
|
+
}, E, R>, batchSize?: number): <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) => import("effect/Effect").Effect<A[], InvalidStateError | OptimisticConcurrencyException | E | E2, R | Exclude<R2, {
|
|
262
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S[], S2[]>;
|
|
263
|
+
}>>;
|
|
264
|
+
/**
|
|
265
|
+
* @tsplus fluent Repository queryAndSavePureBatched
|
|
266
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
267
|
+
*/
|
|
268
|
+
export declare function queryAndSavePureBatched<T extends {
|
|
269
|
+
id: unknown;
|
|
270
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
|
|
271
|
+
filter: Filter<PM>;
|
|
272
|
+
collect?: (t: T) => Option<S>;
|
|
273
|
+
limit?: number;
|
|
274
|
+
skip?: number;
|
|
275
|
+
}, batchSize?: number): <R2, A, E2, S2 extends T>(pure: import("effect/Effect").Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) => import("effect/Effect").Effect<A[], InvalidStateError | OptimisticConcurrencyException | E2, Exclude<R2, {
|
|
276
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S[], S2[]>;
|
|
277
|
+
}>>;
|
|
278
|
+
/**
|
|
279
|
+
* @tsplus fluent Repository saveManyWithPureBatched
|
|
280
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
281
|
+
*/
|
|
282
|
+
export declare function saveManyWithPureBatched<T extends {
|
|
283
|
+
id: unknown;
|
|
284
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, batchSize?: number): <R, A, E, S1 extends T, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>) => (items: Iterable<S1>) => import("effect/Effect").Effect<A[], InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
|
|
285
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1[], S2[]>;
|
|
286
|
+
}>>;
|
|
287
|
+
/**
|
|
288
|
+
* @tsplus fluent Repository saveManyWithPureBatched_
|
|
289
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
290
|
+
*/
|
|
291
|
+
export declare function saveManyWithPureBatched_<R, T extends {
|
|
292
|
+
id: unknown;
|
|
293
|
+
}, PM extends PersistenceModelType<string>, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>, batchSize?: number): import("effect/Effect").Effect<A[], InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
|
|
294
|
+
env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1[], S2[]>;
|
|
295
|
+
}>>;
|
|
296
|
+
/**
|
|
297
|
+
* @tsplus getter Repository save
|
|
298
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
299
|
+
*/
|
|
300
|
+
export declare function save<T extends {
|
|
301
|
+
id: unknown;
|
|
302
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>): (items_0: T, ...items_1: T[]) => import("effect/Effect").Effect<void, InvalidStateError | OptimisticConcurrencyException, never>;
|
|
303
|
+
/**
|
|
304
|
+
* @tsplus getter Repository saveWithEvents
|
|
305
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
306
|
+
*/
|
|
307
|
+
export declare function saveWithEvents<T extends {
|
|
308
|
+
id: unknown;
|
|
309
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>): (events: Iterable<Evt>) => (items_0: T, ...items_1: T[]) => import("effect/Effect").Effect<void, InvalidStateError | OptimisticConcurrencyException, never>;
|
|
310
|
+
/**
|
|
311
|
+
* @tsplus fluent Repository updateWithEffect
|
|
312
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
313
|
+
*/
|
|
314
|
+
export declare function itemUpdateWithEffect<R, E, T extends {
|
|
315
|
+
id: string;
|
|
316
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(repo: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"], mod: (item: T) => Effect<T, E, R>): import("effect/Effect").Effect<void, InvalidStateError | OptimisticConcurrencyException | E | NotFoundError<ItemType>, R>;
|
|
317
|
+
/**
|
|
318
|
+
* @tsplus fluent Repository update
|
|
319
|
+
* @tsplus location "@effect-app/infra/services/Repository/ext"
|
|
320
|
+
*/
|
|
321
|
+
export declare function itemUpdate<T extends {
|
|
322
|
+
id: string;
|
|
323
|
+
}, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(repo: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"], mod: (item: T) => T): import("effect/Effect").Effect<void, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType>, never>;
|
|
324
|
+
//# sourceMappingURL=ext.d.ts.map
|