import { NextRequest, NextResponse } from "next/server"; import { prisma } from "@/lib/prisma"; import { requireSessionAuth } from "@/lib/auth"; export async function GET( request: NextRequest, { params }: { params: Promise<{ id: string }> }, ) { const isAdminRequest = request.headers.get("x-admin-request") === "true"; if (!isAdminRequest) return NextResponse.json({ error: "Admin access required" }, { status: 403 }); const authError = requireSessionAuth(request); if (authError) return authError; const { id: idParam } = await params; const id = parseInt(idParam, 10); if (!Number.isFinite(id)) return NextResponse.json({ error: "Invalid project id" }, { status: 400 }); const { searchParams } = new URL(request.url); const locale = searchParams.get("locale") || "en"; const translation = await prisma.projectTranslation.findFirst({ where: { projectId: id, locale }, }); return NextResponse.json({ translation }); } export async function PUT( request: NextRequest, { params }: { params: Promise<{ id: string }> }, ) { const isAdminRequest = request.headers.get("x-admin-request") === "true"; if (!isAdminRequest) return NextResponse.json({ error: "Admin access required" }, { status: 403 }); const authError = requireSessionAuth(request); if (authError) return authError; const { id: idParam } = await params; const id = parseInt(idParam, 10); if (!Number.isFinite(id)) return NextResponse.json({ error: "Invalid project id" }, { status: 400 }); const body = (await request.json()) as { locale?: string; title?: string; description?: string; }; const locale = body.locale || "en"; const title = body.title?.trim(); const description = body.description?.trim(); if (!title || !description) { return NextResponse.json({ error: "title and description are required" }, { status: 400 }); } const saved = await prisma.projectTranslation.upsert({ where: { projectId_locale: { projectId: id, locale } }, create: { projectId: id, locale, title, description, }, update: { title, description, }, }); return NextResponse.json({ translation: saved }); }