Implementing RPC Procedures with Effect.Service
How do I implement RPC procedures with Effect.Service? Should I?
import { Effect, Stream } from "effect";
import { FileRpcs } from "@commons/domain";
import { FileRepository } from "./file.repository";
export class FileRouter extends Effect.Service<FileRouter>()("app/FileRouter", {
dependencies: [FileRepository.Default],
scoped: Effect.gen(function* () {
const repo = yield* FileRepository;
return yield* FileRpcs.toHandlersContext(
FileRpcs.of({
FileList: () => Stream.fromIterableEffect(repo.list()),
})
);
}),
}) {}import { Effect, Stream } from "effect";
import { FileRpcs } from "@commons/domain";
import { FileRepository } from "./file.repository";
export class FileRouter extends Effect.Service<FileRouter>()("app/FileRouter", {
dependencies: [FileRepository.Default],
scoped: Effect.gen(function* () {
const repo = yield* FileRepository;
return yield* FileRpcs.toHandlersContext(
FileRpcs.of({
FileList: () => Stream.fromIterableEffect(repo.list()),
})
);
}),
}) {}