38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { adaptReviewSubmission } from "@/lib/adapters/reviews";
|
|
import { backendRequest } from "@/lib/http/backend-client";
|
|
import {
|
|
jsonSuccess,
|
|
parseJsonBody,
|
|
parsePositiveIntegerParam,
|
|
withErrorHandling,
|
|
} from "@/lib/http/response";
|
|
import type { ConfirmRevisionResponseDto } from "@/lib/types/backend";
|
|
import { parseConfirmRevisionPayload } from "@/lib/validation/revision";
|
|
|
|
type RouteContext = {
|
|
params: Promise<{
|
|
orderId: string;
|
|
}>;
|
|
};
|
|
|
|
export async function POST(request: Request, context: RouteContext) {
|
|
return withErrorHandling(async () => {
|
|
const { orderId: rawOrderId } = await context.params;
|
|
const orderId = parsePositiveIntegerParam(rawOrderId, "orderId");
|
|
const rawPayload = await parseJsonBody(request);
|
|
const payload = parseConfirmRevisionPayload(rawPayload);
|
|
const response = await backendRequest<ConfirmRevisionResponseDto>(
|
|
`/reviews/${orderId}/confirm-revision`,
|
|
{
|
|
method: "POST",
|
|
body: JSON.stringify(payload),
|
|
},
|
|
);
|
|
|
|
return jsonSuccess(adaptReviewSubmission(response.data), {
|
|
status: response.status,
|
|
mode: "proxy",
|
|
});
|
|
});
|
|
}
|