Bewertung
This commit is contained in:
27
src/app/api/hotels/[id]/ratings/route.ts
Normal file
27
src/app/api/hotels/[id]/ratings/route.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { query } from '@/lib/db';
|
||||
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
// POST: Bewertung speichern oder aktualisieren
|
||||
export async function POST(req: NextRequest, { params }: { params: { id: string } }) {
|
||||
try {
|
||||
const { member_id, grade, comment } = await req.json();
|
||||
if (!member_id || !grade) {
|
||||
return NextResponse.json({ error: 'Mitreisender und Note erforderlich' }, { status: 400 });
|
||||
}
|
||||
|
||||
const res = await query(
|
||||
`INSERT INTO hotel_ratings (hotel_id, member_id, grade, comment, updated_at)
|
||||
VALUES ($1, $2, $3, $4, NOW())
|
||||
ON CONFLICT (hotel_id, member_id)
|
||||
DO UPDATE SET grade = EXCLUDED.grade, comment = EXCLUDED.comment, updated_at = NOW()
|
||||
RETURNING *`,
|
||||
[params.id, member_id, grade, comment ? comment.trim() : null]
|
||||
);
|
||||
|
||||
return NextResponse.json({ success: true, rating: res.rows[0] });
|
||||
} catch (e: any) {
|
||||
return NextResponse.json({ success: false, error: e.message }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user