// LiveFooService.ts
interface Req1 extends Request.Request<...> { ... }
const Req1 = Request.tagged<Req1>("Req1");
const makeReq1Resolver = (deps: ...) => RequestResolver.fromFunctionEffect((req) => ...)
const LiveFooService = Layer.effect(
FooService,
Effect.gen(function *($) {
const dep1 = yield* $(Dep1);
const dep2 = yield* $(Dep2);
const resolver1 = makeReq1Resolver(dep1, dept2);
const resolver2 = ...
return FooService.of({
methodBar: (arg1, arg2) => Effect.request(Req1({ arg1, arg2 }), resolver1).pipe(withRequestCaching(true)),
methodBaz: (argA, argV) => Effect.request(Req2({ argA, argB }), resolver2).pipe(withRequestCaching(true)),
})
})
)
// LiveFooService.ts
interface Req1 extends Request.Request<...> { ... }
const Req1 = Request.tagged<Req1>("Req1");
const makeReq1Resolver = (deps: ...) => RequestResolver.fromFunctionEffect((req) => ...)
const LiveFooService = Layer.effect(
FooService,
Effect.gen(function *($) {
const dep1 = yield* $(Dep1);
const dep2 = yield* $(Dep2);
const resolver1 = makeReq1Resolver(dep1, dept2);
const resolver2 = ...
return FooService.of({
methodBar: (arg1, arg2) => Effect.request(Req1({ arg1, arg2 }), resolver1).pipe(withRequestCaching(true)),
methodBaz: (argA, argV) => Effect.request(Req2({ argA, argB }), resolver2).pipe(withRequestCaching(true)),
})
})
)