fix(httpapi): return request not found errors (#28693)
This commit is contained in:
@@ -3,6 +3,7 @@ import { PermissionID } from "@/permission/schema"
|
||||
import { Effect } from "effect"
|
||||
import { HttpApiBuilder } from "effect/unstable/httpapi"
|
||||
import { InstanceHttpApi } from "../api"
|
||||
import { PermissionNotFoundError } from "../errors"
|
||||
|
||||
export const permissionHandlers = HttpApiBuilder.group(InstanceHttpApi, "permission", (handlers) =>
|
||||
Effect.gen(function* () {
|
||||
@@ -16,11 +17,22 @@ export const permissionHandlers = HttpApiBuilder.group(InstanceHttpApi, "permiss
|
||||
params: { requestID: PermissionID }
|
||||
payload: Permission.ReplyBody
|
||||
}) {
|
||||
yield* svc.reply({
|
||||
requestID: ctx.params.requestID,
|
||||
reply: ctx.payload.reply,
|
||||
message: ctx.payload.message,
|
||||
})
|
||||
yield* svc
|
||||
.reply({
|
||||
requestID: ctx.params.requestID,
|
||||
reply: ctx.payload.reply,
|
||||
message: ctx.payload.message,
|
||||
})
|
||||
.pipe(
|
||||
Effect.catchTag("Permission.NotFoundError", (error) =>
|
||||
Effect.fail(
|
||||
new PermissionNotFoundError({
|
||||
requestID: String(error.requestID),
|
||||
message: `Permission request not found: ${error.requestID}`,
|
||||
}),
|
||||
),
|
||||
),
|
||||
)
|
||||
return true
|
||||
})
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import { QuestionID } from "@/question/schema"
|
||||
import { Effect } from "effect"
|
||||
import { HttpApiBuilder } from "effect/unstable/httpapi"
|
||||
import { InstanceHttpApi } from "../api"
|
||||
import { QuestionNotFoundError } from "../errors"
|
||||
|
||||
export const questionHandlers = HttpApiBuilder.group(InstanceHttpApi, "question", (handlers) =>
|
||||
Effect.gen(function* () {
|
||||
@@ -16,15 +17,35 @@ export const questionHandlers = HttpApiBuilder.group(InstanceHttpApi, "question"
|
||||
params: { requestID: QuestionID }
|
||||
payload: Question.Reply
|
||||
}) {
|
||||
yield* svc.reply({
|
||||
requestID: ctx.params.requestID,
|
||||
answers: ctx.payload.answers,
|
||||
})
|
||||
yield* svc
|
||||
.reply({
|
||||
requestID: ctx.params.requestID,
|
||||
answers: ctx.payload.answers,
|
||||
})
|
||||
.pipe(
|
||||
Effect.catchTag("Question.NotFoundError", (error) =>
|
||||
Effect.fail(
|
||||
new QuestionNotFoundError({
|
||||
requestID: String(error.requestID),
|
||||
message: `Question request not found: ${error.requestID}`,
|
||||
}),
|
||||
),
|
||||
),
|
||||
)
|
||||
return true
|
||||
})
|
||||
|
||||
const reject = Effect.fn("QuestionHttpApi.reject")(function* (ctx: { params: { requestID: QuestionID } }) {
|
||||
yield* svc.reject(ctx.params.requestID)
|
||||
yield* svc.reject(ctx.params.requestID).pipe(
|
||||
Effect.catchTag("Question.NotFoundError", (error) =>
|
||||
Effect.fail(
|
||||
new QuestionNotFoundError({
|
||||
requestID: String(error.requestID),
|
||||
message: `Question request not found: ${error.requestID}`,
|
||||
}),
|
||||
),
|
||||
),
|
||||
)
|
||||
return true
|
||||
})
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ import {
|
||||
SummarizePayload,
|
||||
UpdatePayload,
|
||||
} from "../groups/session"
|
||||
import { PermissionNotFoundError } from "../errors"
|
||||
import * as SessionError from "./session-errors"
|
||||
|
||||
const tryParseJson = (text: string) =>
|
||||
@@ -356,7 +357,16 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
|
||||
payload: typeof PermissionResponsePayload.Type
|
||||
}) {
|
||||
yield* requireSession(ctx.params.sessionID)
|
||||
yield* permissionSvc.reply({ requestID: ctx.params.permissionID, reply: ctx.payload.response })
|
||||
yield* permissionSvc.reply({ requestID: ctx.params.permissionID, reply: ctx.payload.response }).pipe(
|
||||
Effect.catchTag("Permission.NotFoundError", (error) =>
|
||||
Effect.fail(
|
||||
new PermissionNotFoundError({
|
||||
requestID: String(error.requestID),
|
||||
message: `Permission request not found: ${error.requestID}`,
|
||||
}),
|
||||
),
|
||||
),
|
||||
)
|
||||
return true
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user