diff --git a/packages/server/src/rpc/routers/index.ts b/packages/server/src/rpc/routers/index.ts index d301dd1..9dae539 100644 --- a/packages/server/src/rpc/routers/index.ts +++ b/packages/server/src/rpc/routers/index.ts @@ -8,6 +8,6 @@ export const router = Effect.gen(function*() { const proc = yield* procedure return t.router({ - ping: proc.query(() => "pong") + ping: proc.query(({ ctx }) => ctx.run(Effect.succeed("pong"))) }) }) diff --git a/packages/server/src/trpc/CreateTRPCContext.ts b/packages/server/src/trpc/CreateTRPCContext.ts index cefabfc..f942da5 100644 --- a/packages/server/src/trpc/CreateTRPCContext.ts +++ b/packages/server/src/trpc/CreateTRPCContext.ts @@ -1,5 +1,6 @@ import type { CreateExpressContextOptions } from "@trpc/server/adapters/express" -import { Context, Layer } from "effect" +import { Context, Effect, Layer, Runtime } from "effect" +import type { Services } from "../Services" import type { TRPCContext } from "./TRPCContext" @@ -11,5 +12,14 @@ export class CreateTRPCContext extends Context.Tag("CreateTRPCContext")() {} export module CreateTRPCContext { - export const Live = Layer.sync(CreateTRPCContext, () => ({ req }) => ({ req })) + export const Live = Layer.effect(CreateTRPCContext, Effect.gen(function*() { + const run = yield* Effect.runtime().pipe( + Effect.map(Runtime.runFork) + ) + + return ({ req }) => ({ + req, + run, + }) + })) } diff --git a/packages/server/src/trpc/TRPCContext.ts b/packages/server/src/trpc/TRPCContext.ts index 1c47ef8..a365754 100644 --- a/packages/server/src/trpc/TRPCContext.ts +++ b/packages/server/src/trpc/TRPCContext.ts @@ -1,6 +1,13 @@ +import type { Effect, Runtime } from "effect" +import type { RuntimeFiber } from "effect/Fiber" import type { Request } from "express" +import type { Services } from "../Services" export interface TRPCContext { req: Request + run: ( + self: Effect.Effect, + options?: Runtime.RunForkOptions, + ) => RuntimeFiber }