feat : limit each session to 1 hours when checkout

This commit is contained in:
2026-10-01 22:37:52 +07:00 Unverified
parent 61dfc9c9e5
commit d85687c332
11 changed files with 163 additions and 27 deletions
+4 -2
View File
@@ -1,5 +1,5 @@
import Link from "next/link";
import { and, desc, eq, isNull } from "drizzle-orm";
import { and, desc, eq, gt, isNull } from "drizzle-orm";
import { redirect } from "next/navigation";
import { connection } from "next/server";
import { getDb } from "@/db";
@@ -10,6 +10,7 @@ import { SiteHeader } from "@/components/public/site-header";
import { Badge } from "@/components/ui/badge";
import { Card, CardAction, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { getCustomerSession } from "@/lib/auth/server";
import { CHECKOUT_DURATION_MS, checkoutNow } from "@/lib/commission/checkout-expiration";
export const instant = false;
export default async function CommissionTicketsPage() {
@@ -23,7 +24,8 @@ export default async function CommissionTicketsPage() {
getDb().select({ id: commissionCheckouts.id, amount: commissionCheckouts.amountBaht,
createdAt: commissionCheckouts.createdAt }).from(commissionCheckouts)
.leftJoin(commissionTickets, eq(commissionTickets.checkoutId, commissionCheckouts.id))
.where(and(eq(commissionCheckouts.userId, session.user.id), isNull(commissionTickets.id)))
.where(and(eq(commissionCheckouts.userId, session.user.id), isNull(commissionTickets.id),
gt(commissionCheckouts.createdAt, new Date(checkoutNow() - CHECKOUT_DURATION_MS))))
.orderBy(desc(commissionCheckouts.createdAt)).limit(20),
]);
return <div className="min-h-svh"><SiteHeader /><CommissionLiveRefresh endpoint="/api/commission/events" />