feat: menu visibility toggle + drag-and-drop reorder in admin

This commit is contained in:
2026-06-28 13:43:02 -05:00
parent f6b76eb396
commit 4b6e7f4362
2 changed files with 184 additions and 13 deletions
+30
View File
@@ -0,0 +1,30 @@
import { NextRequest, NextResponse } from 'next/server';
import { requireRole } from '@/lib/auth';
import { db } from '@/lib/db';
export async function POST(request: NextRequest) {
try {
await requireRole('admin');
const body = await request.json();
const { order } = body;
if (!Array.isArray(order) || order.length === 0) {
return NextResponse.json({ error: 'Missing or invalid order array' }, { status: 400 });
}
// Each entry: { id: number, sort_order: number }
const updates = order.map((item: { id: number; sort_order: number }, index: number) =>
db.query(
'UPDATE menu_items SET sort_order = $1 WHERE id = $2',
[index, item.id]
)
);
await Promise.all(updates);
return NextResponse.json({ ok: true });
} catch (error: any) {
console.error('POST /api/menu/reorder error:', error);
return NextResponse.json({ error: error.message || 'Failed to reorder menu items' }, { status: 500 });
}
}