27 lines
756 B
TypeScript
27 lines
756 B
TypeScript
import "server-only";
|
|
|
|
import { count, eq, ne } from "drizzle-orm";
|
|
import { db, WebsiteHelpCenterTickets, WebsiteTicket } from "@/lib/db";
|
|
|
|
/** Open-queue sizes for dual ticket products (CMS desk vs help-center). */
|
|
export async function fetchTicketQueueOpenCounts(): Promise<{
|
|
cmsOpen: number;
|
|
helpOpen: number;
|
|
}> {
|
|
const [cmsOpen, helpOpen] = await Promise.all([
|
|
db
|
|
.select({ total: count() })
|
|
.from(WebsiteTicket)
|
|
.where(ne(WebsiteTicket.status, "closed"))
|
|
.then((rows) => rows[0]?.total ?? 0)
|
|
.catch(() => 0),
|
|
db
|
|
.select({ total: count() })
|
|
.from(WebsiteHelpCenterTickets)
|
|
.where(eq(WebsiteHelpCenterTickets.open, true))
|
|
.then((rows) => rows[0]?.total ?? 0)
|
|
.catch(() => 0),
|
|
]);
|
|
return { cmsOpen, helpOpen };
|
|
}
|