Files
todo-tests/packages/server/src/trpc/TRPCContextCreator.ts
Julien Valverdé a49843ec89 Fix
2024-07-05 18:49:00 +02:00

26 lines
801 B
TypeScript

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.runPromise)
)
return ({ req }) => ({
req,
run,
})
}))
}