pass error code to trpc response
This commit is contained in:
parent
0170d64700
commit
240b92f84d
@ -7,6 +7,7 @@ import { calculate } from '@/api/core/query';
|
||||
import type { User } from '@/api/user/types';
|
||||
import initializeApollo from '@/apollo/client';
|
||||
import { protectedProcedure } from '@/server/procedure';
|
||||
import { createTRPCError } from '@/utils/trpc';
|
||||
import { QueryClient } from '@tanstack/react-query';
|
||||
|
||||
export const calculateRouter = router({
|
||||
@ -50,22 +51,26 @@ export const calculateRouter = router({
|
||||
input,
|
||||
});
|
||||
|
||||
const calculateResult = await calculate(requestData);
|
||||
try {
|
||||
const calculateResult = await calculate(requestData);
|
||||
|
||||
const result = transformCalculateResults({
|
||||
calculateInput: input,
|
||||
requestCalculate: requestData,
|
||||
responseCalculate: calculateResult,
|
||||
});
|
||||
const result = transformCalculateResults({
|
||||
calculateInput: input,
|
||||
requestCalculate: requestData,
|
||||
responseCalculate: calculateResult,
|
||||
});
|
||||
|
||||
// TEMP
|
||||
if (ctx.unlimited) {
|
||||
result.__calculateResult = calculateResult;
|
||||
// TEMP
|
||||
if (ctx.unlimited) {
|
||||
result.__calculateResult = calculateResult;
|
||||
}
|
||||
|
||||
return {
|
||||
data: result,
|
||||
success: true,
|
||||
};
|
||||
} catch (error) {
|
||||
throw createTRPCError(error);
|
||||
}
|
||||
|
||||
return {
|
||||
data: result,
|
||||
success: true,
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
@ -34,6 +34,7 @@ import * as price from '@/process/price';
|
||||
import * as subsidy from '@/process/subsidy';
|
||||
import * as supplierAgent from '@/process/supplier-agent';
|
||||
import type { CalculationValues } from '@/stores/calculation/values/types';
|
||||
import { createTRPCError } from '@/utils/trpc';
|
||||
import { QueryClient } from '@tanstack/react-query';
|
||||
|
||||
const { DEFAULT_FINGAP_ROW, DEFAULT_KASKO_ROW, DEFAULT_OSAGO_ROW } = insuranceTable;
|
||||
@ -119,47 +120,51 @@ export const quoteRouter = router({
|
||||
user = { domainName: input.values.user };
|
||||
}
|
||||
|
||||
const requestData = await createRequestData({
|
||||
context: {
|
||||
apolloClient,
|
||||
queryClient,
|
||||
...ctx,
|
||||
user,
|
||||
},
|
||||
input,
|
||||
});
|
||||
try {
|
||||
const requestData = await createRequestData({
|
||||
context: {
|
||||
apolloClient,
|
||||
queryClient,
|
||||
...ctx,
|
||||
user,
|
||||
},
|
||||
input,
|
||||
});
|
||||
|
||||
const calculateResult = await calculate(requestData);
|
||||
const calculateResult = await calculate(requestData);
|
||||
|
||||
const requestCreateKP = compatRequestCreateKP({
|
||||
domainName: user.domainName,
|
||||
finGAP: input.fingap,
|
||||
insurance: Object.values(input.insurance.values),
|
||||
calculation: {
|
||||
calculationValues: await compatValues(input.values, { apolloClient }),
|
||||
...calculateResult,
|
||||
preparedPayments: requestData.preparedPayments,
|
||||
additionalData: requestData.additionalData,
|
||||
},
|
||||
elt: input.elt,
|
||||
});
|
||||
const requestCreateKP = compatRequestCreateKP({
|
||||
domainName: user.domainName,
|
||||
finGAP: input.fingap,
|
||||
insurance: Object.values(input.insurance.values),
|
||||
calculation: {
|
||||
calculationValues: await compatValues(input.values, { apolloClient }),
|
||||
...calculateResult,
|
||||
preparedPayments: requestData.preparedPayments,
|
||||
additionalData: requestData.additionalData,
|
||||
},
|
||||
elt: input.elt,
|
||||
});
|
||||
|
||||
const createKPResult = await createKP(requestCreateKP);
|
||||
const createKPResult = await createKP(requestCreateKP);
|
||||
|
||||
const result = transformCalculateResults({
|
||||
calculateInput: input,
|
||||
requestCalculate: requestData,
|
||||
responseCalculate: calculateResult,
|
||||
});
|
||||
const result = transformCalculateResults({
|
||||
calculateInput: input,
|
||||
requestCalculate: requestData,
|
||||
responseCalculate: calculateResult,
|
||||
});
|
||||
|
||||
if (URL_CRM_DOWNLOADKP) {
|
||||
result.values.downloadKp = URL_CRM_DOWNLOADKP?.concat(createKPResult.offerprintformapi);
|
||||
if (URL_CRM_DOWNLOADKP) {
|
||||
result.values.downloadKp = URL_CRM_DOWNLOADKP?.concat(createKPResult.offerprintformapi);
|
||||
}
|
||||
|
||||
return {
|
||||
data: result,
|
||||
success: true,
|
||||
};
|
||||
} catch (error) {
|
||||
throw createTRPCError(error);
|
||||
}
|
||||
|
||||
return {
|
||||
data: result,
|
||||
success: true,
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
|
||||
22
apps/web/utils/trpc.ts
Normal file
22
apps/web/utils/trpc.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import { HttpError } from './error';
|
||||
import { TRPCError } from '@trpc/server';
|
||||
import type { TRPC_ERROR_CODE_KEY } from '@trpc/server/rpc';
|
||||
|
||||
export function createTRPCError(error: unknown) {
|
||||
let code: TRPC_ERROR_CODE_KEY = 'INTERNAL_SERVER_ERROR';
|
||||
let message = '';
|
||||
|
||||
if (error instanceof HttpError && error.statusCode === 400) {
|
||||
code = 'BAD_REQUEST';
|
||||
}
|
||||
|
||||
if (error instanceof Error) {
|
||||
message = error.message;
|
||||
}
|
||||
|
||||
return new TRPCError({
|
||||
cause: error,
|
||||
code,
|
||||
message,
|
||||
});
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user