tRPC context work
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { TRPCError } from "@trpc/server"
|
||||
import type { CreateExpressContextOptions } from "@trpc/server/adapters/express"
|
||||
import type { CreateWSSContextFnOptions } from "@trpc/server/adapters/ws"
|
||||
import { Context, Effect, Layer, Runtime } from "effect"
|
||||
import { Cause, Context, Effect, Layer, Runtime } from "effect"
|
||||
import type { Services } from "../Services"
|
||||
import { TRPCContextTransactionEnum, type TRPCContext, type TRPCContextTransaction } from "./TRPCContext"
|
||||
|
||||
@@ -55,13 +55,31 @@ export module TRPCContextCreator {
|
||||
const mapErrors = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
||||
Effect.sandbox(effect).pipe(
|
||||
Effect.catchTags({
|
||||
Die: cause => Effect.fail(
|
||||
Empty: cause => Effect.fail(
|
||||
new TRPCError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
cause: new TRCPErrorCause(cause),
|
||||
})
|
||||
),
|
||||
|
||||
Fail: cause => Effect.fail(
|
||||
cause.error instanceof TRPCError
|
||||
? cause.error
|
||||
: new TRPCError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
cause: new TRCPErrorCause(cause),
|
||||
})
|
||||
),
|
||||
|
||||
Die: cause => Effect.fail(
|
||||
cause.defect instanceof TRPCError
|
||||
? cause.defect
|
||||
: new TRPCError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
cause: new TRCPErrorCause(cause),
|
||||
})
|
||||
),
|
||||
|
||||
Interrupt: cause => Effect.fail(
|
||||
new TRPCError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
@@ -69,14 +87,7 @@ const mapErrors = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
||||
})
|
||||
),
|
||||
|
||||
Fail: cause => Effect.fail(
|
||||
new TRPCError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
cause: new TRCPErrorCause(cause),
|
||||
})
|
||||
),
|
||||
|
||||
Empty: cause => Effect.fail(
|
||||
Sequential: cause => Effect.fail(
|
||||
new TRPCError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
cause: new TRCPErrorCause(cause),
|
||||
@@ -89,19 +100,12 @@ const mapErrors = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
||||
cause: new TRCPErrorCause(cause),
|
||||
})
|
||||
),
|
||||
|
||||
Sequential: cause => Effect.fail(
|
||||
new TRPCError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
cause: new TRCPErrorCause(cause),
|
||||
})
|
||||
),
|
||||
})
|
||||
)
|
||||
|
||||
|
||||
export class TRCPErrorCause extends Error {
|
||||
constructor(readonly cause: unknown) {
|
||||
export class TRCPErrorCause<E> extends Error {
|
||||
constructor(readonly cause: Cause.Cause<E>) {
|
||||
super()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user