import { NextRequest, NextResponse } from 'next/server'; import { db } from '@/lib/db'; export const dynamic = 'force-dynamic'; export async function GET() { try { const { rows } = await db.query( 'SELECT id, name, icon_svg, sort_order FROM room_amenities ORDER BY sort_order, name' ); return NextResponse.json({ data: rows }); } catch (error) { console.error('Failed to fetch amenities:', error); return NextResponse.json({ error: 'Failed to fetch amenities' }, { status: 500 }); } } export async function POST(request: NextRequest) { try { const { name, icon_svg, sort_order } = await request.json(); if (!name || !icon_svg) { return NextResponse.json({ error: 'Name and icon_svg are required' }, { status: 400 }); } const { rows } = await db.query( 'INSERT INTO room_amenities (name, icon_svg, sort_order) VALUES ($1, $2, $3) RETURNING id, name, icon_svg, sort_order', [name, icon_svg, sort_order || 0] ); return NextResponse.json({ data: rows[0] }); } catch (error: any) { console.error('Failed to create amenity:', error); if (error.code === '23505') { return NextResponse.json({ error: 'Amenity with this name already exists' }, { status: 409 }); } return NextResponse.json({ error: 'Failed to create amenity' }, { status: 500 }); } } export async function PUT(request: NextRequest) { try { const { id, name, icon_svg, sort_order } = await request.json(); if (!id) { return NextResponse.json({ error: 'ID is required' }, { status: 400 }); } const { rows } = await db.query( 'UPDATE room_amenities SET name = $1, icon_svg = $2, sort_order = $3 WHERE id = $4 RETURNING id, name, icon_svg, sort_order', [name, icon_svg, sort_order || 0, id] ); if (rows.length === 0) { return NextResponse.json({ error: 'Amenity not found' }, { status: 404 }); } return NextResponse.json({ data: rows[0] }); } catch (error: any) { console.error('Failed to update amenity:', error); if (error.code === '23505') { return NextResponse.json({ error: 'Amenity with this name already exists' }, { status: 409 }); } return NextResponse.json({ error: 'Failed to update amenity' }, { status: 500 }); } } export async function DELETE(request: NextRequest) { try { const { searchParams } = new URL(request.url); const id = searchParams.get('id'); if (!id) { return NextResponse.json({ error: 'ID is required' }, { status: 400 }); } await db.query('DELETE FROM room_amenities WHERE id = $1', [id]); return NextResponse.json({ success: true }); } catch (error) { console.error('Failed to delete amenity:', error); return NextResponse.json({ error: 'Failed to delete amenity' }, { status: 500 }); } }