todosRouter

This commit is contained in:
Julien Valverdé
2024-07-05 02:37:02 +02:00
parent a2402279f5
commit dd038acd6b
2 changed files with 29 additions and 1 deletions

View File

@@ -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,
})
})

View 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)
})))
})
})