Add blog CMS with tracked public posts
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { parseBlogPost } from "@/lib/dto";
|
||||
import { guard, run, readBody } from "@/lib/adminRoute";
|
||||
|
||||
export async function GET() {
|
||||
const denied = await guard();
|
||||
if (denied) return denied;
|
||||
|
||||
return run(async () => {
|
||||
const posts = await prisma.blogPost.findMany({
|
||||
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 });
|
||||
return NextResponse.json(created, { status: 201 });
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user