Todo router fix

This commit is contained in:
Julien Valverdé
2024-07-13 04:09:46 +02:00
parent 0b740d6c7f
commit 44909f256e

View File

@@ -9,6 +9,7 @@ import { RPCProcedureBuilder } from "../procedures/RPCProcedureBuilder"
const encodeTodos = S.encode(S.Chunk(JsonifiableTodo))
const encodeOptionalTodo = S.encode(S.OptionFromNullOr(JsonifiableTodo))
const decodeTodo = S.decode(JsonifiableTodo)
export const todoRouter = Effect.gen(function*() {
@@ -51,27 +52,41 @@ export const todoRouter = Effect.gen(function*() {
getByID: procedure
.input(S.decodeUnknownPromise(S.String))
.query(({ ctx, input }) => ctx.run(Effect.gen(function*() {
const todos = yield* TodoRepository
return yield* encodeOptionalTodo(
yield* (yield* TodoRepository).getByID(input)
yield* todos.getByID(input)
)
}))),
add: procedure
.input(S.decodeUnknownPromise(JsonifiableTodo))
.input(S.decodeUnknownPromise(S.encodedSchema(JsonifiableTodo)))
.mutation(({ ctx, input }) => ctx.run(Effect.gen(function*() {
return yield* (yield* TodoRepository).add(input)
const todos = yield* TodoRepository
return yield* todos.add(
yield* decodeTodo(input)
)
}))),
update: procedure
.input(S.decodeUnknownPromise(JsonifiableTodo))
.input(S.decodeUnknownPromise(S.encodedSchema(JsonifiableTodo)))
.mutation(({ ctx, input }) => ctx.run(Effect.gen(function*() {
return yield* (yield* TodoRepository).update(input)
const todos = yield* TodoRepository
return yield* todos.update(
yield* decodeTodo(input)
)
}))),
remove: procedure
.input(S.decodeUnknownPromise(JsonifiableTodo))
.input(S.decodeUnknownPromise(S.encodedSchema(JsonifiableTodo)))
.mutation(({ ctx, input }) => ctx.run(Effect.gen(function*() {
return yield* (yield* TodoRepository).remove(input)
const todos = yield* TodoRepository
return yield* todos.remove(
yield* decodeTodo(input)
)
}))),
})
})