todosRouter
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import { Effect } from "effect"
|
import { Effect } from "effect"
|
||||||
import { TRPCBuilder } from "../../trpc/TRPCBuilder"
|
import { TRPCBuilder } from "../../trpc/TRPCBuilder"
|
||||||
import { RPCProcedure } from "../RPCProcedure"
|
import { RPCProcedure } from "../RPCProcedure"
|
||||||
|
import { todosRouter } from "./todos"
|
||||||
|
|
||||||
|
|
||||||
export const appRouter = Effect.gen(function*() {
|
export const appRouter = Effect.gen(function*() {
|
||||||
@@ -10,7 +11,9 @@ export const appRouter = Effect.gen(function*() {
|
|||||||
return t.router({
|
return t.router({
|
||||||
ping: procedure.query(({ ctx }) =>
|
ping: procedure.query(({ ctx }) =>
|
||||||
ctx.run(Effect.succeed("pong"))
|
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