2025-08-04 17:45:44 +02:00
|
|
|
import { TRPCError } from "@trpc/server";
|
2025-08-07 14:50:40 +02:00
|
|
|
import { z } from "zod/v4";
|
2025-08-04 17:45:44 +02:00
|
|
|
import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc";
|
2026-02-20 11:36:47 +01:00
|
|
|
import { getPagamentoDataForCheckout } from "~/server/controllers/servizio.controller";
|
2025-08-04 17:45:44 +02:00
|
|
|
import { db } from "~/server/db";
|
2026-02-20 11:36:47 +01:00
|
|
|
import { zPagamentoId } from "~/server/utils/zod_types";
|
2025-08-04 17:45:44 +02:00
|
|
|
// Create a new ratelimiter, that allows 10 requests per 10 seconds
|
|
|
|
|
/*
|
|
|
|
|
const ratelimit = new RateLimiterHandler({
|
|
|
|
|
maxRequests: 10,
|
|
|
|
|
windowSize: 60,
|
|
|
|
|
analytics: false,
|
|
|
|
|
});
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
export const pagamentiRouter = createTRPCRouter({
|
2025-08-28 18:27:07 +02:00
|
|
|
getPaymentFromIntent: protectedProcedure
|
|
|
|
|
.input(z.object({ pIntentId: z.string() }))
|
|
|
|
|
.query(async ({ input }) => {
|
|
|
|
|
try {
|
|
|
|
|
return (
|
|
|
|
|
(await db
|
|
|
|
|
.selectFrom("payments")
|
|
|
|
|
.selectAll("payments")
|
|
|
|
|
.where("payments.intent_id", "=", input.pIntentId)
|
|
|
|
|
.executeTakeFirst()) || null
|
|
|
|
|
);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
throw new TRPCError({
|
|
|
|
|
code: "INTERNAL_SERVER_ERROR",
|
|
|
|
|
message: `Error retriving payment: ${(error as Error).message}`,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}),
|
2026-02-20 11:36:47 +01:00
|
|
|
|
|
|
|
|
getPagamentoDataForCheckout: protectedProcedure
|
|
|
|
|
.input(z.object({ paymentId: zPagamentoId }))
|
|
|
|
|
.query(async ({ input }) => {
|
|
|
|
|
return await getPagamentoDataForCheckout(input.paymentId);
|
|
|
|
|
}),
|
2025-08-04 17:45:44 +02:00
|
|
|
});
|