diff --git a/src/Layers/trpc/TRPCExpressRoute.ts b/src/Layers/trpc/TRPCExpressRoute.ts new file mode 100644 index 0000000..6c47103 --- /dev/null +++ b/src/Layers/trpc/TRPCExpressRoute.ts @@ -0,0 +1,21 @@ +import { createExpressMiddleware } from "@trpc/server/adapters/express" +import { Config, Effect, Layer } from "effect" +import { ExpressApp } from "../express" +import { TRPCUnknownContextCreator } from "./TRPCContextCreator" +import { TRPCAnyRouter } from "./TRPCRouter" + + +export const TRPCExpressRouteLive = ( + config: { + readonly path: Config.Config + } +) => Layer.effectDiscard(Effect.gen(function*() { + const app = yield* ExpressApp.ExpressApp + + app.use(yield* config.path, + createExpressMiddleware({ + router: yield* TRPCAnyRouter, + createContext: (yield* TRPCUnknownContextCreator).createExpressContext, + }) + ) +})) diff --git a/src/Layers/trpc/index.ts b/src/Layers/trpc/index.ts index b3b8299..3703bfc 100644 --- a/src/Layers/trpc/index.ts +++ b/src/Layers/trpc/index.ts @@ -1,4 +1,5 @@ export * as TRPCBuilder from "./TRPCBuilder" export * as TRPCContext from "./TRPCContext" export * as TRPCContextCreator from "./TRPCContextCreator" +export * as TRPCExpressRoute from "./TRPCExpressRoute" export * as TRPCRouter from "./TRPCRouter"