TRPCContextCreator

This commit is contained in:
Julien Valverdé
2024-07-05 16:31:37 +02:00
parent 98795975a5
commit a27a185759
3 changed files with 7 additions and 7 deletions

View File

@@ -0,0 +1,25 @@
import type { CreateExpressContextOptions } from "@trpc/server/adapters/express"
import { Context, Effect, Layer, Runtime } from "effect"
import type { Services } from "../Services"
import type { TRPCContext } from "./TRPCContext"
/**
* Provides a function that instantiates a fresh context for each tRPC procedure call
*/
export class TRPCContextCreator extends Context.Tag("TRPCContextCreator")<TRPCContextCreator,
(opts: CreateExpressContextOptions) => TRPCContext
>() {}
export module TRPCContextCreator {
export const Live = Layer.effect(TRPCContextCreator, Effect.gen(function*() {
const run = yield* Effect.runtime<Services>().pipe(
Effect.map(Runtime.runFork)
)
return ({ req }) => ({
req,
run,
})
}))
}