refactor(api): extract estimate procedure support

This commit is contained in:
2026-03-31 22:45:05 +02:00
parent 3f9ae29e01
commit ba2bf00712
3 changed files with 408 additions and 375 deletions
@@ -10,40 +10,8 @@ import {
PermissionKey,
SubmitEstimateVersionSchema,
} from "@capakraken/shared";
import { TRPCError } from "@trpc/server";
import { managerProcedure, requirePermission } from "../trpc.js";
type EstimateRouterErrorCode = "NOT_FOUND" | "PRECONDITION_FAILED";
type EstimateRouterErrorRule = {
code: EstimateRouterErrorCode;
messages?: readonly string[];
predicates?: readonly ((message: string) => boolean)[];
};
function rethrowEstimateRouterError(
error: unknown,
rules: readonly EstimateRouterErrorRule[],
): never {
if (!(error instanceof Error)) {
throw error;
}
const matchingRule = rules.find(
(rule) =>
rule.messages?.includes(error.message) === true ||
rule.predicates?.some((predicate) => predicate(error.message)) === true,
);
if (matchingRule) {
throw new TRPCError({
code: matchingRule.code,
message: error.message,
});
}
throw error;
}
import { rethrowEstimateRouterError } from "./estimate-procedure-support.js";
export const estimateVersionWorkflowProcedures = {
submitVersion: managerProcedure