diff --git a/packages/server/src/rpc/RPCRouter.ts b/packages/server/src/rpc/RPCRouter.ts index b78ff5a..ad6ad4a 100644 --- a/packages/server/src/rpc/RPCRouter.ts +++ b/packages/server/src/rpc/RPCRouter.ts @@ -1,4 +1,5 @@ -import { Context, Effect, Layer } from "effect" +import { TRPCError } from "@trpc/server" +import { Context, Data, Effect, Layer } from "effect" import { TRPCBuilder } from "../trpc/TRPCBuilder" import { RPCProcedureBuilder } from "./procedures/RPCProcedureBuilder" import { todoRouter } from "./routers/todo" @@ -9,14 +10,26 @@ export const router = Effect.gen(function*() { const procedure = yield* RPCProcedureBuilder return t.router({ - ping: procedure.query(({ ctx }) => - ctx.run(Effect.succeed("pong")) - ), + ping: procedure.query(({ ctx }) => ctx.run( + Effect.succeed("pong") + )), + + fail1: procedure.query(({ ctx }) => ctx.run( + Effect.fail(new AnError({ aValue: "A value" })) + )), + fail2: procedure.query(({ ctx }) => ctx.run( + Effect.fail(new TRPCError({ code: "NOT_IMPLEMENTED" })) + )), todo: yield* todoRouter, }) }) +class AnError extends Data.TaggedError("AnError")<{ + aValue: string +}> {} + + export class RPCRouter extends Context.Tag("RPCRouter") >() {}