Refactoring
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
import { Context, Effect, Layer } from "effect"
|
||||
import { TRPCBuilder } from "../trpc/TRPCBuilder"
|
||||
|
||||
|
||||
const procedure = TRPCBuilder.pipe(Effect.map(t => t.procedure))
|
||||
|
||||
export class RPCProcedure extends Context.Tag("RPCProcedure")<RPCProcedure, Effect.Effect.Success<typeof procedure>>() {}
|
||||
|
||||
export module RPCProcedure {
|
||||
export const Live = Layer.effect(RPCProcedure, procedure)
|
||||
}
|
||||
13
packages/server/src/rpc/procedures/RPCProcedureBuilder.ts
Normal file
13
packages/server/src/rpc/procedures/RPCProcedureBuilder.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { Context, Effect, Layer } from "effect"
|
||||
import { TRPCBuilder } from "../../trpc/TRPCBuilder"
|
||||
|
||||
|
||||
const procedure = TRPCBuilder.pipe(Effect.map(t => t.procedure))
|
||||
|
||||
export class RPCProcedureBuilder extends Context.Tag("RPCProcedureBuilder")<RPCProcedureBuilder,
|
||||
Effect.Effect.Success<typeof procedure>
|
||||
>() {}
|
||||
|
||||
export module RPCProcedureBuilder {
|
||||
export const Live = Layer.effect(RPCProcedureBuilder, procedure)
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
import { Effect } from "effect"
|
||||
import { TRPCBuilder } from "../../trpc/TRPCBuilder"
|
||||
import { RPCProcedure } from "../RPCProcedure"
|
||||
import { RPCProcedureBuilder } from "../procedures/RPCProcedureBuilder"
|
||||
import { todosRouter } from "./todos"
|
||||
|
||||
|
||||
export const appRouter = Effect.gen(function*() {
|
||||
const t = yield* TRPCBuilder
|
||||
const procedure = yield* RPCProcedure
|
||||
const procedure = yield* RPCProcedureBuilder
|
||||
|
||||
return t.router({
|
||||
ping: procedure.query(({ ctx }) =>
|
||||
|
||||
@@ -3,12 +3,12 @@ import { JsonifiableTodo } from "@todo-tests/common/data"
|
||||
import { Effect } from "effect"
|
||||
import { TodoRepository } from "../../TodoRepository"
|
||||
import { TRPCBuilder } from "../../trpc/TRPCBuilder"
|
||||
import { RPCProcedure } from "../RPCProcedure"
|
||||
import { RPCProcedureBuilder } from "../procedures/RPCProcedureBuilder"
|
||||
|
||||
|
||||
export const todosRouter = Effect.gen(function*() {
|
||||
const t = yield* TRPCBuilder
|
||||
const procedure = yield* RPCProcedure
|
||||
const procedure = yield* RPCProcedureBuilder
|
||||
|
||||
return t.router({
|
||||
get: procedure
|
||||
@@ -17,9 +17,22 @@ export const todosRouter = Effect.gen(function*() {
|
||||
))
|
||||
.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)
|
||||
})))
|
||||
return yield* S.encode(S.OptionFromNullOr(JsonifiableTodo))(
|
||||
yield* todos.get(input.id)
|
||||
)
|
||||
}))),
|
||||
|
||||
getOrThrow: procedure
|
||||
.input(S.decodeUnknownSync(
|
||||
S.Struct({ id: S.String })
|
||||
))
|
||||
.query(({ ctx, input }) => ctx.run(Effect.gen(function*() {
|
||||
const todos = yield* TodoRepository
|
||||
|
||||
return yield* S.encode(JsonifiableTodo)(
|
||||
yield* yield* todos.get(input.id)
|
||||
)
|
||||
}))),
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user