Work
This commit is contained in:
@@ -11,24 +11,41 @@ export const todosRouter = Effect.gen(function*() {
|
||||
const procedure = yield* RPCProcedureBuilder
|
||||
|
||||
return t.router({
|
||||
all: procedure.query(({ ctx }) => ctx.run(Effect.gen(function*() {
|
||||
const todos = yield* TodoRepository
|
||||
all: procedure
|
||||
.query(({ ctx }) => ctx.run(Effect.gen(function*() {
|
||||
const todos = yield* TodoRepository
|
||||
|
||||
return yield* S.encode(S.Array(JsonifiableTodo))(
|
||||
yield* todos.todos.get
|
||||
)
|
||||
}))),
|
||||
return yield* S.encode(S.Array(JsonifiableTodo))(
|
||||
yield* todos.todos.get
|
||||
)
|
||||
}))),
|
||||
|
||||
get: procedure
|
||||
.input(S.decodeUnknownSync(
|
||||
S.Struct({ id: S.String })
|
||||
))
|
||||
getByID: procedure
|
||||
.input(S.decodeUnknownPromise(S.String))
|
||||
.query(({ ctx, input }) => ctx.run(Effect.gen(function*() {
|
||||
const todos = yield* TodoRepository
|
||||
|
||||
return yield* S.encode(S.OptionFromNullOr(JsonifiableTodo))(
|
||||
yield* todos.get(input.id)
|
||||
yield* todos.getByID(input)
|
||||
)
|
||||
}))),
|
||||
|
||||
add: procedure
|
||||
.input(S.decodeUnknownPromise(JsonifiableTodo))
|
||||
.mutation(({ ctx, input }) => ctx.run(TodoRepository.pipe(
|
||||
Effect.flatMap(todos => todos.add(input))
|
||||
))),
|
||||
|
||||
update: procedure
|
||||
.input(S.decodeUnknownPromise(JsonifiableTodo))
|
||||
.mutation(({ ctx, input }) => ctx.run(TodoRepository.pipe(
|
||||
Effect.flatMap(todos => todos.update(input))
|
||||
))),
|
||||
|
||||
remove: procedure
|
||||
.input(S.decodeUnknownPromise(JsonifiableTodo))
|
||||
.mutation(({ ctx, input }) => ctx.run(TodoRepository.pipe(
|
||||
Effect.flatMap(todos => todos.remove(input))
|
||||
))),
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user