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()),
      })
    );
  }),
}) {}
Was this page helpful?