Files
buzz-sheet/app/admin/commission/actions.ts
T
2026-10-01 21:32:59 +07:00

25 lines
1.3 KiB
TypeScript

"use server";
import { eq } from "drizzle-orm";
import { getDb } from "@/db";
import { commissionSettings } from "@/db/schema";
import { requireAdmin } from "@/lib/auth/server";
export async function setCommissionAvailability(isOpen: boolean, message: string) {
await requireAdmin();
if (typeof isOpen !== "boolean" || typeof message !== "string")
return { status: "error" as const, message: "ข้อมูลไม่ถูกต้อง" };
const closureMessage = message.trim();
if (!isOpen && (closureMessage.length < 1 || closureMessage.length > 1000))
return { status: "error" as const, message: "กรุณาเขียนเหตุผลที่ปิดรับ Commission (ไม่เกิน 1,000 ตัวอักษร)" };
try {
const [settings] = await getDb().update(commissionSettings).set({
isOpen, ...(!isOpen ? { closureMessage } : {}), updatedAt: new Date(),
}).where(eq(commissionSettings.id, 1)).returning({ isOpen: commissionSettings.isOpen });
if (!settings) return { status: "error" as const, message: "ไม่พบการตั้งค่า Commission" };
return { status: "saved" as const };
} catch {
return { status: "error" as const, message: "บันทึกสถานะ Commission ไม่สำเร็จ" };
}
}