@@ -1,9 +1,9 @@
|
|||||||
import type { AnyRouterDef, Router } from "@trpc/server"
|
import type { AnyRouter, AnyRouterDef, Router } from "@trpc/server"
|
||||||
import { Context, Effect, Layer } from "effect"
|
import { Context, Effect, Layer } from "effect"
|
||||||
|
|
||||||
|
|
||||||
export class TRPCAnyRouter extends Context.Tag("@thilalib/TRCP/TRPCRouter")<TRPCAnyRouter,
|
export class TRPCAnyRouter extends Context.Tag("@thilalib/TRCP/TRPCRouter")<TRPCAnyRouter,
|
||||||
Router<AnyRouterDef>
|
AnyRouter
|
||||||
>() {}
|
>() {}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Config, Effect, Layer } from "effect"
|
import { Config, Context, Effect, Layer } from "effect"
|
||||||
import * as TRPC from "."
|
import * as TRPC from "."
|
||||||
import { ExpressApp, ExpressNodeHTTPServer } from "../express"
|
import { ExpressApp, ExpressNodeHTTPServer } from "../express"
|
||||||
|
|
||||||
@@ -16,6 +16,7 @@ const router = TRPCBuilder.pipe(Effect.map(t => t.router({
|
|||||||
})))
|
})))
|
||||||
|
|
||||||
const { TRPCRouter, TRPCRouterLive } = TRPC.TRPCRouter.make(router)
|
const { TRPCRouter, TRPCRouterLive } = TRPC.TRPCRouter.make(router)
|
||||||
|
type TRouter = Context.Tag.Service<typeof TRPCRouter>
|
||||||
|
|
||||||
|
|
||||||
const ServerLive = Layer.empty.pipe(
|
const ServerLive = Layer.empty.pipe(
|
||||||
@@ -33,7 +34,11 @@ const ServerLive = Layer.empty.pipe(
|
|||||||
Layer.provideMerge(ExpressApp.ExpressAppLive())
|
Layer.provideMerge(ExpressApp.ExpressAppLive())
|
||||||
)
|
)
|
||||||
|
|
||||||
await Layer.launch(ServerLive).pipe(
|
await Effect.gen(function*() {
|
||||||
|
// yield* TRPCRouter
|
||||||
|
|
||||||
|
return yield* Layer.launch(ServerLive)
|
||||||
|
}).pipe(
|
||||||
Effect.scoped,
|
Effect.scoped,
|
||||||
Effect.runPromise,
|
Effect.runPromise,
|
||||||
)
|
)
|
||||||
|
|||||||
35
src/Layers/trpc/tests2.ts
Normal file
35
src/Layers/trpc/tests2.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import type { AnyRouter } from "@trpc/server"
|
||||||
|
import { Context, Effect, Layer } from "effect"
|
||||||
|
import * as TRPC from "."
|
||||||
|
|
||||||
|
|
||||||
|
const { TRPCBuilder, TRPCBuilderLive } = TRPC.TRPCBuilder.make<never>()
|
||||||
|
|
||||||
|
const router = TRPCBuilder.pipe(Effect.map(t => t.router({
|
||||||
|
ping: t.procedure.query(({ ctx }) => ctx.run(
|
||||||
|
Effect.succeed("pong")
|
||||||
|
)),
|
||||||
|
})))
|
||||||
|
|
||||||
|
|
||||||
|
export class TRPCAnyRouter extends Context.Tag("@thilalib/TRCP/TRPCRouter")<TRPCAnyRouter,
|
||||||
|
AnyRouter
|
||||||
|
>() {}
|
||||||
|
|
||||||
|
export class TRPCRouter extends Context.Tag("@thilalib/TRCP/TRPCRouter")<TRPCRouter,
|
||||||
|
Effect.Effect.Success<typeof router>
|
||||||
|
>() {}
|
||||||
|
|
||||||
|
const RouterLive = Layer.effect(TRPCRouter, router)
|
||||||
|
const AnyRouterLive = Layer.effect(TRPCAnyRouter, router)
|
||||||
|
|
||||||
|
|
||||||
|
const main = Effect.gen(function*() {
|
||||||
|
yield* TRPCAnyRouter
|
||||||
|
yield* TRPCRouter
|
||||||
|
})
|
||||||
|
|
||||||
|
const runnable = main.pipe(
|
||||||
|
Effect.provide(RouterLive),
|
||||||
|
Effect.provide(TRPCBuilderLive),
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user