diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 7519f94..d27f08f 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -1,9 +1,10 @@ import { BunRuntime } from "@effect/platform-bun" import { Todo } from "@todo-tests/common/data" import { Identifiable } from "@todo-tests/common/traits" -import { Array, Duration, Effect, Fiber, Option, Stream } from "effect" +import { Array, Duration, Effect, Fiber, Layer, Option, Stream } from "effect" import { MainLive } from "./Main" import { TodoRepository, createDefaultTodos } from "./TodoRepository" +import { TRPCEffectRunnerLive } from "./trpc" const watchTodoChanges = Effect.gen(function*() { @@ -54,6 +55,13 @@ const main = Effect.gen(function*() { yield* Fiber.join(watcher) }) -BunRuntime.runMain( - main.pipe(Effect.provide(MainLive)) +const runnableMain = main.pipe( + Effect.provide( + Layer.mergeAll( + TRPCEffectRunnerLive, + MainLive, + ) + ) ) + +BunRuntime.runMain(runnableMain) diff --git a/packages/server/src/trpc.ts b/packages/server/src/trpc.ts index 61948b2..4db6c22 100644 --- a/packages/server/src/trpc.ts +++ b/packages/server/src/trpc.ts @@ -1,7 +1,7 @@ import { initTRPC } from "@trpc/server" import { Context, Effect, Layer, Runtime } from "effect" import type { RuntimeFiber } from "effect/Fiber" -import type { MainR } from "./Main" +import { MainLive, type MainR } from "./Main" import { TodoRepository } from "./TodoRepository" @@ -16,6 +16,8 @@ export const TRPCEffectRunnerLive = Layer.effect(TRPCEffectRunner, Effect.runtime().pipe( Effect.map(Runtime.runFork) ) +).pipe( + Layer.provide(MainLive) )