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 encodeTodos = S.encode(S.Chunk(JsonifiableTodo))
const encodeOptionalTodo = S.encode(S.OptionFromNullOr(JsonifiableTodo)) const encodeOptionalTodo = S.encode(S.OptionFromNullOr(JsonifiableTodo))
const decodeTodo = S.decode(JsonifiableTodo)
export const todoRouter = Effect.gen(function*() { export const todoRouter = Effect.gen(function*() {
@@ -51,27 +52,41 @@ export const todoRouter = Effect.gen(function*() {
getByID: procedure getByID: procedure
.input(S.decodeUnknownPromise(S.String)) .input(S.decodeUnknownPromise(S.String))
.query(({ ctx, input }) => ctx.run(Effect.gen(function*() { .query(({ ctx, input }) => ctx.run(Effect.gen(function*() {
const todos = yield* TodoRepository
return yield* encodeOptionalTodo( return yield* encodeOptionalTodo(
yield* (yield* TodoRepository).getByID(input) yield* todos.getByID(input)
) )
}))), }))),
add: procedure add: procedure
.input(S.decodeUnknownPromise(JsonifiableTodo)) .input(S.decodeUnknownPromise(S.encodedSchema(JsonifiableTodo)))
.mutation(({ ctx, input }) => ctx.run(Effect.gen(function*() { .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 update: procedure
.input(S.decodeUnknownPromise(JsonifiableTodo)) .input(S.decodeUnknownPromise(S.encodedSchema(JsonifiableTodo)))
.mutation(({ ctx, input }) => ctx.run(Effect.gen(function*() { .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 remove: procedure
.input(S.decodeUnknownPromise(JsonifiableTodo)) .input(S.decodeUnknownPromise(S.encodedSchema(JsonifiableTodo)))
.mutation(({ ctx, input }) => ctx.run(Effect.gen(function*() { .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)
)
}))), }))),
}) })
}) })