first commit

This commit is contained in:
2026-07-24 11:34:00 -03:00
commit 7ad059e613
282 changed files with 49054 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
export const dynamic = 'force-dynamic';
import { notFound } from 'next/navigation';
import { getCustomerById, getCustomerStats } from '@/lib/customers';
import { db } from '@/lib/db';
import { sales, customers } from '@/lib/db/schema';
import { eq, desc, and, sql } from 'drizzle-orm';
import { CustomerDetailClient } from './customer-detail-client';
type RouteContext = { params: Promise<{ id: string }> };
export default async function CustomerDetailPage({ params }: RouteContext) {
const { id } = await params;
const customerId = parseInt(id);
if (isNaN(customerId)) notFound();
let customer;
let stats;
try {
[customer, stats] = await Promise.all([
getCustomerById(customerId),
getCustomerStats(customerId),
]);
} catch {
notFound();
}
// Get purchase history
const purchaseHistory = await db
.select({
id: sales.id,
saleNumber: sales.saleNumber,
saleDate: sales.saleDate,
totalAmount: sales.totalAmount,
status: sales.status,
paymentMethod: sales.paymentMethod,
})
.from(sales)
.where(eq(sales.customerId, customerId))
.orderBy(desc(sales.saleDate))
.limit(50);
return (
<CustomerDetailClient
customer={customer}
stats={stats}
purchaseHistory={purchaseHistory}
/>
);
}