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 }); } }