import { NextResponse } from "next/server"; import { prisma } from "@/lib/prisma"; import { parseBlogPost } from "@/lib/dto"; import { guard, run, readBody } from "@/lib/adminRoute"; import { blogPostInclude } from "@/lib/blogs"; export async function GET() { const denied = await guard(); if (denied) return denied; return run(async () => { const posts = await prisma.blogPost.findMany({ include: blogPostInclude, orderBy: [{ updatedAt: "desc" }], }); return NextResponse.json(posts); }); } export async function POST(req: Request) { const denied = await guard(); if (denied) return denied; return run(async () => { const data = parseBlogPost(await readBody(req)); const created = await prisma.blogPost.create({ data: { title: data.title, slug: data.slug, excerpt: data.excerpt, coverImageUrl: data.coverImageUrl, content: data.content, isPublished: data.isPublished, publishedAt: data.publishedAt, authors: { create: data.authors, }, }, include: blogPostInclude, }); return NextResponse.json(created, { status: 201 }); }); }