Add error handling to stock page for Prisma queries

This commit is contained in:
Andymick
2026-07-18 08:53:05 +01:00
parent cf1d40b1c1
commit 3b5d1947dd
+15 -5
View File
@@ -4,24 +4,34 @@ import AccountsNav from '@/components/AccountsNav';
import StockAdjustForm from '@/components/StockAdjustForm'; import StockAdjustForm from '@/components/StockAdjustForm';
export default async function StockPage() { export default async function StockPage() {
const [levels, productRows] = await Promise.all([ let levels = [];
let productRows = [];
try {
[levels, productRows] = await Promise.all([
prisma.stockLevel.findMany({ prisma.stockLevel.findMany({
include: { product: true }, include: { product: true },
orderBy: [{ product: { name: 'asc' } }, { color: 'asc' }, { size: 'asc' }],
}), }),
prisma.product.findMany({ orderBy: { name: 'asc' } }), prisma.product.findMany(),
]); ]);
} catch (err) {
console.error('Error fetching stock data:', err);
}
const products = productRows.map((p) => ({ const products = productRows.map((p) => ({
id: p.id, id: p.id,
name: p.name, name: p.name,
colors: JSON.parse(p.colors) as string[], colors: JSON.parse(p.colors) as string[],
sizes: p.sizes ? (JSON.parse(p.sizes) as string[]) : [], sizes: p.sizes ? (JSON.parse(p.sizes) as string[]) : [],
})); })).sort((a, b) => a.name.localeCompare(b.name));
// Group rows under their product for a readable table. // Group rows under their product for a readable table.
const grouped = new Map<string, typeof levels>(); const grouped = new Map<string, typeof levels>();
for (const level of levels) { for (const level of levels.sort((a, b) => {
if (a.product.name !== b.product.name) return a.product.name.localeCompare(b.product.name);
if (a.color !== b.color) return a.color.localeCompare(b.color);
return (a.size || '').localeCompare(b.size || '');
})) {
const list = grouped.get(level.productId) ?? []; const list = grouped.get(level.productId) ?? [];
list.push(level); list.push(level);
grouped.set(level.productId, list); grouped.set(level.productId, list);