vchikalkin 5ae502c262 Revert "trpc: check unlimited in middleware"
This reverts commit 90c0ef481b03bfb7d1a822dfa9e667f59f2c27b2.
2023-03-29 19:04:27 +03:00

74 lines
2.0 KiB
TypeScript

import { router } from '../../trpc';
import { createRequestData } from './lib/request';
import { transformCalculateResults } from './lib/transform';
import { validate } from './lib/validation';
import { CalculateInputSchema, CalculateOutputSchema } from './types';
import { calculate } from '@/api/core/query';
import type { User } from '@/api/user/types';
import initializeApollo from '@/apollo/client';
import { protectedProcedure } from '@/server/procedure';
import { QueryClient } from '@tanstack/react-query';
export const calculateRouter = router({
calculate: protectedProcedure
.input(CalculateInputSchema)
.output(CalculateOutputSchema)
.mutation(async ({ input, ctx }) => {
const apolloClient = initializeApollo();
const queryClient = new QueryClient();
if (!ctx.unlimited) {
const validationResult = await validate({
context: {
apolloClient,
queryClient,
user: ctx.user,
},
input,
});
if (validationResult.success === false) {
return {
error: validationResult.error,
success: false,
};
}
}
let user: Pick<User, 'domainName'> = { domainName: ctx.user.domainName };
if (ctx.unlimited && input.values.user) {
user = { domainName: input.values.user };
}
const requestData = await createRequestData({
context: {
apolloClient,
queryClient,
...ctx,
user,
},
input,
});
const calculateResult = await calculate(requestData);
if (calculateResult.errors?.length > 0) {
return {
error: calculateResult.errors[0],
success: false,
};
}
const result = transformCalculateResults({
calculateInput: input,
requestCalculate: requestData,
responseCalculate: calculateResult,
});
return {
data: result,
success: true,
};
}),
});