This commit is contained in:
Julien Valverdé
2024-07-05 01:23:58 +02:00
parent cb0973b5ed
commit d875652142
5 changed files with 22 additions and 31 deletions

View File

@@ -0,0 +1,11 @@
import { Context, Effect, Layer } from "effect"
import { TRPCBuilder } from "../trpc/TRPCBuilder"
const procedure = TRPCBuilder.pipe(Effect.map(t => t.procedure))
export class RPCProcedure extends Context.Tag("RPCProcedure")<RPCProcedure, Effect.Effect.Success<typeof procedure>>() {}
export module RPCProcedure {
export const Live = Layer.effect(RPCProcedure, procedure)
}

View File

@@ -2,7 +2,7 @@ import { createExpressMiddleware } from "@trpc/server/adapters/express"
import { Config, Effect, Layer } from "effect" import { Config, Effect, Layer } from "effect"
import { ExpressApp } from "../express/ExpressApp" import { ExpressApp } from "../express/ExpressApp"
import { CreateTRPCContext } from "../trpc/CreateTRPCContext" import { CreateTRPCContext } from "../trpc/CreateTRPCContext"
import { router } from "./routers" import { appRouter } from "./routers"
export module RPCServer { export module RPCServer {
@@ -13,7 +13,7 @@ export module RPCServer {
yield* Config.string("RPC_ROOT").pipe(Config.withDefault("/rpc")), yield* Config.string("RPC_ROOT").pipe(Config.withDefault("/rpc")),
createExpressMiddleware({ createExpressMiddleware({
router: yield* router, router: yield* appRouter,
createContext: yield* CreateTRPCContext, createContext: yield* CreateTRPCContext,
}), }),
) )

View File

@@ -1,5 +0,0 @@
import { Effect } from "effect"
import { TRPCBuilder } from "../trpc/TRPCBuilder"
export const procedure = TRPCBuilder.pipe(Effect.map(t => t.procedure))

View File

@@ -1,13 +1,17 @@
import { Effect } from "effect" import { Effect } from "effect"
import { TRPCBuilder } from "../../trpc/TRPCBuilder" import { TRPCBuilder } from "../../trpc/TRPCBuilder"
import { procedure } from "../procedures" import { RPCProcedure } from "../RPCProcedure"
export const router = Effect.gen(function*() { export const appRouter = Effect.gen(function*() {
const t = yield* TRPCBuilder const t = yield* TRPCBuilder
const proc = yield* procedure const procedure = yield* RPCProcedure
return t.router({ return t.router({
ping: proc.query(({ ctx }) => ctx.run(Effect.succeed("pong"))) ping: procedure.query(({ ctx }) =>
ctx.run(Effect.succeed("pong"))
)
}) })
}) })
export type AppRouter = Effect.Effect.Success<typeof appRouter>

View File

@@ -1,19 +0,0 @@
import { Context, Effect, Layer, Runtime } from "effect"
import type { RuntimeFiber } from "effect/Fiber"
import type { Services } from "../Services"
export class TRPCEffectRuntime extends Context.Tag("TRPCEffectRuntime")<TRPCEffectRuntime,
<A, E>(
self: Effect.Effect<A, E, Services>,
options?: Runtime.RunForkOptions,
) => RuntimeFiber<A, E>
>() {}
export module TRPCEffectRuntime {
export const Live = Layer.effect(TRPCEffectRuntime,
Effect.runtime<Services>().pipe(
Effect.map(Runtime.runFork)
)
)
}