32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
"use server";
|
|
|
|
import { revalidatePath } from "next/cache";
|
|
import { requireStaff } from "@/lib/admin/guard";
|
|
import { prisma } from "@/lib/prisma";
|
|
|
|
export async function getBadgeData({ code }: { code: string }) {
|
|
await requireStaff();
|
|
const badge = await prisma.websiteBadges.findUnique({
|
|
where: { badgeKey: code },
|
|
select: { badgeName: true, badgeDescription: true },
|
|
});
|
|
if (!badge) return { ok: false as const, data: null };
|
|
return { ok: true as const, data: { name: badge.badgeName, desc: badge.badgeDescription } };
|
|
}
|
|
|
|
export async function updateBadge({ code, name, desc }: { code: string; name: string; desc: string }) {
|
|
await requireStaff();
|
|
await prisma.websiteBadges.upsert({
|
|
where: { badgeKey: code },
|
|
update: { badgeName: name, badgeDescription: desc, updatedAt: new Date() },
|
|
create: {
|
|
badgeKey: code,
|
|
badgeName: name,
|
|
badgeDescription: desc,
|
|
createdAt: new Date(),
|
|
updatedAt: new Date(),
|
|
},
|
|
});
|
|
revalidatePath("/admin/import/badges");
|
|
}
|