Refactoring

This commit is contained in:
Julien Valverdé
2024-07-05 16:22:59 +02:00
parent dd038acd6b
commit 98795975a5
5 changed files with 36 additions and 25 deletions

View File

@@ -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)
}

View 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)
}

View File

@@ -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 }) =>

View File

@@ -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)
)
}))),
})
})