54 lines
1.6 KiB
TypeScript
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" });
|
|
}
|
|
}
|