import { NextRequest, NextResponse } from "next/server"; import { prisma } from "@/lib/prisma"; import { requireSessionAuth } from "@/lib/auth"; import { upsertContentByKey } from "@/lib/content"; export async function GET(request: NextRequest) { 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 pages = await prisma.contentPage.findMany({ orderBy: { key: "asc" }, include: { translations: { select: { locale: true, updatedAt: true, title: true, slug: true }, }, }, }); return NextResponse.json({ pages }); } export async function POST(request: NextRequest) { 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 body = await request.json(); const { key, locale, title, slug, content, metaDescription, keywords } = body as Record; if (!key || typeof key !== "string") { return NextResponse.json({ error: "key is required" }, { status: 400 }); } if (!locale || typeof locale !== "string") { return NextResponse.json({ error: "locale is required" }, { status: 400 }); } if (!content || typeof content !== "object") { return NextResponse.json({ error: "content (JSON) is required" }, { status: 400 }); } const saved = await upsertContentByKey({ key, locale, title: typeof title === "string" ? title : null, slug: typeof slug === "string" ? slug : null, content, metaDescription: typeof metaDescription === "string" ? metaDescription : null, keywords: typeof keywords === "string" ? keywords : null, }); return NextResponse.json({ saved }); }