diff --git a/packages/server/src/Services.ts b/packages/server/src/Services.ts index be92bd1..51821ae 100644 --- a/packages/server/src/Services.ts +++ b/packages/server/src/Services.ts @@ -6,4 +6,4 @@ export const ServicesLive = Layer.mergeAll( TodoRepositoryLive ) -export type Services = Layer.Layer.Success +export interface Services extends Layer.Layer.Success {} diff --git a/packages/server/src/rpc/routers/todos.ts b/packages/server/src/rpc/routers/todos.ts index 3133d9b..017aa55 100644 --- a/packages/server/src/rpc/routers/todos.ts +++ b/packages/server/src/rpc/routers/todos.ts @@ -11,6 +11,14 @@ export const todosRouter = Effect.gen(function*() { const procedure = yield* RPCProcedureBuilder return t.router({ + all: procedure.query(({ ctx }) => ctx.run(Effect.gen(function*() { + const todos = yield* TodoRepository + + return yield* S.encode(S.Array(JsonifiableTodo))( + yield* todos.todos.get + ) + }))), + get: procedure .input(S.decodeUnknownSync( S.Struct({ id: S.String }) @@ -22,17 +30,5 @@ export const todosRouter = Effect.gen(function*() { yield* todos.get(input.id) ) }))), - - getOrThrow: procedure - .input(S.decodeUnknownSync( - S.Struct({ id: S.String }) - )) - .query(({ ctx, input }) => ctx.run(Effect.gen(function*() { - const todos = yield* TodoRepository - - return yield* S.encode(JsonifiableTodo)( - yield* yield* todos.get(input.id) - ) - }))), }) }) diff --git a/packages/server/src/trpc/TRPCContext.ts b/packages/server/src/trpc/TRPCContext.ts index ca0a55b..7c57bb4 100644 --- a/packages/server/src/trpc/TRPCContext.ts +++ b/packages/server/src/trpc/TRPCContext.ts @@ -1,12 +1,14 @@ -import type { Effect } from "effect" +import type { Effect, Runtime } from "effect" import type { Request } from "express" import type { Services } from "../Services" export interface TRPCContext { - req: Request + runtime: Runtime.Runtime run: ( effect: Effect.Effect, options?: { readonly signal?: AbortSignal } ) => Promise + + req: Request } diff --git a/packages/server/src/trpc/TRPCContextCreator.ts b/packages/server/src/trpc/TRPCContextCreator.ts index 5dd7fe4..5aaa1fe 100644 --- a/packages/server/src/trpc/TRPCContextCreator.ts +++ b/packages/server/src/trpc/TRPCContextCreator.ts @@ -13,13 +13,13 @@ export class TRPCContextCreator extends Context.Tag("TRPCContextCreator")().pipe( - Effect.map(Runtime.runPromise) - ) + const runtime = yield* Effect.runtime() + const run = Runtime.runPromise(runtime) return ({ req }) => ({ - req, + runtime, run, + req, }) })) }