feat: health check seo
This commit is contained in:
@@ -121,7 +121,10 @@ export const getAllPackages = async (req, res) => {
|
||||
categorySlug ? { category: { slug: categorySlug } } : {},
|
||||
],
|
||||
},
|
||||
include: { category: true },
|
||||
include: {
|
||||
category: true,
|
||||
seo: true,
|
||||
},
|
||||
orderBy: [{ sortOrder: "asc" }, { createdAt: "desc" }],
|
||||
});
|
||||
|
||||
@@ -148,6 +151,7 @@ export const createPackage = async (req, res) => {
|
||||
isActive,
|
||||
isFeatured,
|
||||
sortOrder,
|
||||
seo,
|
||||
} = req.body;
|
||||
|
||||
const healthPackage = await prisma.healthPackage.create({
|
||||
@@ -163,6 +167,25 @@ export const createPackage = async (req, res) => {
|
||||
isActive: isActive ?? true,
|
||||
isFeatured: isFeatured ?? false,
|
||||
sortOrder: sortOrder ? Number(sortOrder) : 1000,
|
||||
|
||||
...(seo && {
|
||||
seo: {
|
||||
create: {
|
||||
seoTitle: seo.seoTitle,
|
||||
metaDescription: seo.metaDescription,
|
||||
focusKeyphrase: seo.focusKeyphrase,
|
||||
slug: slug,
|
||||
tags: seo.tags || [],
|
||||
ogTitle: seo.ogTitle,
|
||||
ogDescription: seo.ogDescription,
|
||||
ogImage: seo.ogImage,
|
||||
},
|
||||
},
|
||||
}),
|
||||
},
|
||||
include: {
|
||||
category: true,
|
||||
seo: true,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -183,13 +206,58 @@ export const updatePackage = async (req, res) => {
|
||||
const data = { ...req.body };
|
||||
delete data.id;
|
||||
delete data.category;
|
||||
delete data.createdAt;
|
||||
delete data.updatedAt;
|
||||
delete data.seoId;
|
||||
|
||||
if (data.categoryId) data.categoryId = Number(data.categoryId);
|
||||
if (data.sortOrder) data.sortOrder = Number(data.sortOrder);
|
||||
|
||||
const existingPackage = await prisma.healthPackage.findUnique({
|
||||
where: { id: Number(id) },
|
||||
select: { slug: true },
|
||||
});
|
||||
const seoSlug = data.slug || existingPackage.slug;
|
||||
|
||||
const updated = await prisma.healthPackage.update({
|
||||
where: { id: Number(id) },
|
||||
data,
|
||||
|
||||
data: {
|
||||
...data,
|
||||
|
||||
seo: data.seo
|
||||
? {
|
||||
upsert: {
|
||||
create: {
|
||||
seoTitle: data.seo.seoTitle,
|
||||
metaDescription: data.seo.metaDescription,
|
||||
focusKeyphrase: data.seo.focusKeyphrase,
|
||||
slug: seoSlug,
|
||||
tags: data.seo.tags || [],
|
||||
ogTitle: data.seo.ogTitle,
|
||||
ogDescription: data.seo.ogDescription,
|
||||
ogImage: data.seo.ogImage,
|
||||
},
|
||||
|
||||
update: {
|
||||
seoTitle: data.seo.seoTitle,
|
||||
metaDescription: data.seo.metaDescription,
|
||||
focusKeyphrase: data.seo.focusKeyphrase,
|
||||
slug: seoSlug,
|
||||
tags: data.seo.tags || [],
|
||||
ogTitle: data.seo.ogTitle,
|
||||
ogDescription: data.seo.ogDescription,
|
||||
ogImage: data.seo.ogImage,
|
||||
},
|
||||
},
|
||||
}
|
||||
: undefined,
|
||||
},
|
||||
|
||||
include: {
|
||||
category: true,
|
||||
seo: true,
|
||||
},
|
||||
});
|
||||
|
||||
return res
|
||||
@@ -204,11 +272,21 @@ export const updatePackage = async (req, res) => {
|
||||
export const deletePackage = async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
await prisma.healthPackage.delete({ where: { id: Number(id) } });
|
||||
return res.status(200).json({ success: true, message: "Package deleted" });
|
||||
|
||||
await prisma.healthPackage.delete({
|
||||
where: { id: Number(id) },
|
||||
});
|
||||
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
message: "Package deleted",
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return res.status(500).json({ success: false, message: "Delete failed" });
|
||||
return res.status(500).json({
|
||||
success: false,
|
||||
message: "Delete failed",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -363,7 +441,11 @@ export const getPackageBySlug = async (req, res) => {
|
||||
const { slug } = req.params;
|
||||
const healthPackage = await prisma.healthPackage.findFirst({
|
||||
where: { slug, isActive: true },
|
||||
include: { category: true },
|
||||
|
||||
include: {
|
||||
category: true,
|
||||
seo: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!healthPackage) {
|
||||
@@ -372,7 +454,10 @@ export const getPackageBySlug = async (req, res) => {
|
||||
.json({ success: false, message: "Package not found" });
|
||||
}
|
||||
|
||||
return res.status(200).json({ success: true, data: healthPackage });
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
data: healthPackage,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return res
|
||||
@@ -414,7 +499,9 @@ export const getAllInquiries = async (req, res) => {
|
||||
take: queryLimit,
|
||||
include: {
|
||||
healthPackage: {
|
||||
include: { category: true },
|
||||
include: {
|
||||
category: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
orderBy: { createdAt: "desc" },
|
||||
|
||||
Reference in New Issue
Block a user