fix: slide image upload - clear image_url when image_id set, fix slides.image_url column type to TEXT, add bed amenities (Queen, 2 Queen)
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { requireRole } from '@/lib/auth';
|
||||
import { db } from '@/lib/db';
|
||||
|
||||
export async function GET() {
|
||||
try {
|
||||
const { rows } = await db.query(
|
||||
'SELECT id, language, title, version, updated_at FROM terms_content ORDER BY language, updated_at DESC'
|
||||
);
|
||||
return NextResponse.json({ data: rows });
|
||||
} catch (error) {
|
||||
console.error('Error fetching all terms:', error);
|
||||
return NextResponse.json({ error: 'Failed to fetch terms' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
await requireRole('admin');
|
||||
const body = await request.json();
|
||||
const { language, title, content, version = '1.0' } = body;
|
||||
|
||||
if (!language || !title || !content) {
|
||||
return NextResponse.json({ error: 'Language, title, and content are required' }, { status: 400 });
|
||||
}
|
||||
|
||||
const { rows } = await db.query(
|
||||
'INSERT INTO terms_content (language, title, content, version) VALUES ($1, $2, $3, $4) RETURNING id, language, title, version, updated_at',
|
||||
[language, title, content, version]
|
||||
);
|
||||
|
||||
return NextResponse.json({ data: rows[0] });
|
||||
} catch (error: any) {
|
||||
console.error('Error creating terms:', error);
|
||||
if (error.code === '23505') {
|
||||
return NextResponse.json({ error: 'Terms with this language and version already exists' }, { status: 409 });
|
||||
}
|
||||
return NextResponse.json({ error: error.message || 'Failed to create terms' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
|
||||
export async function PUT(request: NextRequest) {
|
||||
try {
|
||||
await requireRole('admin');
|
||||
const body = await request.json();
|
||||
const { id, title, content } = body;
|
||||
|
||||
if (!id) {
|
||||
return NextResponse.json({ error: 'Terms ID is required' }, { status: 400 });
|
||||
}
|
||||
|
||||
const { rows } = await db.query(
|
||||
'UPDATE terms_content SET title = $1, content = $2, updated_at = NOW() WHERE id = $3 RETURNING id, language, title, version, updated_at',
|
||||
[title, content, id]
|
||||
);
|
||||
|
||||
if (rows.length === 0) {
|
||||
return NextResponse.json({ error: 'Terms not found' }, { status: 404 });
|
||||
}
|
||||
|
||||
return NextResponse.json({ data: rows[0] });
|
||||
} catch (error: any) {
|
||||
console.error('Error updating terms:', error);
|
||||
return NextResponse.json({ error: error.message || 'Failed to update terms' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user