feat: health check seo

This commit is contained in:
Kailasdevdas
2026-05-26 11:56:22 +05:30
parent 31c0e50177
commit 4d73da5ddd
9 changed files with 886 additions and 325 deletions
@@ -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" },