svrjs-nextjs-website/app/api/mdx/pages/[slug]/route.ts
Cypro Freelance e7f1a86172 some changes
2024-07-23 23:32:57 +05:30

54 lines
1.6 KiB
TypeScript

import { NextApiRequest, NextApiResponse } from "next";
import clientPromise from "@/lib/db";
export async function GET(req: NextApiRequest, res: NextApiResponse) {
const { slug } = req.query;
try {
const client = await clientPromise;
const db = client.db();
const page = await db.collection("pages").findOne({ slug });
if (page) {
res.status(200).json(page);
} else {
res.status(404).json({ error: "Page not found" });
}
} catch (error) {
res.status(500).json({ error: "Failed to load page" });
}
}
export async function PUT(req: NextApiRequest, res: NextApiResponse) {
const { slug } = req.query;
const { title, content } = req.body;
try {
const client = await clientPromise;
const db = client.db();
const result = await db
.collection("pages")
.updateOne({ slug }, { $set: { title, content } });
if (result.matchedCount > 0) {
const updatedPage = await db.collection("pages").findOne({ slug });
res.status(200).json(updatedPage);
} else {
res.status(404).json({ error: "Page not found" });
}
} catch (error) {
res.status(500).json({ error: "Failed to update page" });
}
}
export async function DELETE(req: NextApiRequest, res: NextApiResponse) {
const { slug } = req.query;
try {
const client = await clientPromise;
const db = client.db();
const result = await db.collection("pages").deleteOne({ slug });
if (result.deletedCount > 0) {
res.status(200).json({ message: "Page successfully deleted" });
} else {
res.status(404).json({ error: "Page not found" });
}
} catch (error) {
res.status(500).json({ error: "Failed to delete page" });
}
}