Todo router fix
This commit is contained in:
@@ -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)
|
||||||
|
)
|
||||||
}))),
|
}))),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user