todosRouter
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { Effect } from "effect"
|
||||
import { TRPCBuilder } from "../../trpc/TRPCBuilder"
|
||||
import { RPCProcedure } from "../RPCProcedure"
|
||||
import { todosRouter } from "./todos"
|
||||
|
||||
|
||||
export const appRouter = Effect.gen(function*() {
|
||||
@@ -10,7 +11,9 @@ export const appRouter = Effect.gen(function*() {
|
||||
return t.router({
|
||||
ping: procedure.query(({ ctx }) =>
|
||||
ctx.run(Effect.succeed("pong"))
|
||||
)
|
||||
),
|
||||
|
||||
todos: yield* todosRouter,
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
25
packages/server/src/rpc/routers/todos.ts
Normal file
25
packages/server/src/rpc/routers/todos.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { Schema as S } from "@effect/schema"
|
||||
import { JsonifiableTodo } from "@todo-tests/common/data"
|
||||
import { Effect } from "effect"
|
||||
import { TodoRepository } from "../../TodoRepository"
|
||||
import { TRPCBuilder } from "../../trpc/TRPCBuilder"
|
||||
import { RPCProcedure } from "../RPCProcedure"
|
||||
|
||||
|
||||
export const todosRouter = Effect.gen(function*() {
|
||||
const t = yield* TRPCBuilder
|
||||
const procedure = yield* RPCProcedure
|
||||
|
||||
return t.router({
|
||||
get: procedure
|
||||
.input(S.decodeUnknownSync(
|
||||
S.Struct({ id: S.String })
|
||||
))
|
||||
.query(({ ctx, input }) => ctx.run(Effect.gen(function*() {
|
||||
const todos = yield* TodoRepository
|
||||
const todo = yield* yield* todos.get(input.id)
|
||||
|
||||
return yield* S.encode(JsonifiableTodo)(todo)
|
||||
})))
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user