import { NextRequest, NextResponse } from "next/server"; import { prisma } from "@/lib/prisma"; import { requireAdmin, requireAuth } from "@/lib/session"; import { MediaVisibility, MediaType } from "@prisma/client"; export async function GET(req: NextRequest) { const session = await requireAuth(); if (!session) { return NextResponse.json({ error: "Non autorisé" }, { status: 401 }); } const orderBy = "desc"; try { const media = await prisma.media.findMany({ orderBy: { createdAt: orderBy as "desc" }, }); return NextResponse.json(media); } catch { return NextResponse.json({ error: "Erreur" }, { status: 500 }); } } export async function POST(req: NextRequest) { const admin = await requireAdmin(); if (!admin) { return NextResponse.json({ error: "Admin requis" }, { status: 403 }); } const body = await req.json(); const { title, description, url, type, visibility } = body; if (!title || !url) { return NextResponse.json({ error: "Titre et URL requis" }, { status: 400 }); } try { const media = await prisma.media.create({ data: { title, description: description || null, url, type: (type as MediaType) || "PHOTO", visibility: (visibility as MediaVisibility) || "MEMBERS_ONLY", uploadedById: admin.user.id, }, }); return NextResponse.json(media, { status: 201 }); } catch (error) { console.error(error); return NextResponse.json({ error: "Erreur" }, { status: 500 }); } } export async function DELETE(req: NextRequest) { const admin = await requireAdmin(); if (!admin) { return NextResponse.json({ error: "Admin requis" }, { status: 403 }); } const { id } = await req.json(); if (!id) { return NextResponse.json({ error: "id requis" }, { status: 400 }); } try { await prisma.media.delete({ where: { id } }); return NextResponse.json({ ok: true }); } catch (error) { console.error(error); return NextResponse.json({ error: "Erreur" }, { status: 500 }); } }