Skip to content

Commit 0614efd

Browse files
committed
Add personal queue stats endpoint
1 parent 0a6429f commit 0614efd

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

src/server/trpc/router/queue.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { router, protectedStaffProcedure, protectedProcedure } from '../trpc';
1+
import { router, protectedStaffProcedure, protectedProcedure, publicProcedure } from '../trpc';
22
import { z } from 'zod';
33
import { TRPCClientError } from '@trpc/client';
4+
import { TicketStatus } from '@prisma/client';
45

56
export const queueRouter = router({
67
getQueueByName: protectedProcedure
@@ -27,6 +28,30 @@ export const queueRouter = router({
2728
});
2829
}),
2930

31+
// Returns personal queue names mapping to isOpen, and the number of open tickets in each queue
32+
getPersonalQueueStats: publicProcedure.query(async ({ ctx }) => {
33+
const personalQueues = await ctx.prisma.personalQueue.findMany({
34+
select: {
35+
name: true,
36+
isOpen: true,
37+
Ticket: {
38+
select: {
39+
status: true,
40+
},
41+
where: {
42+
status: TicketStatus.OPEN,
43+
},
44+
}
45+
},
46+
});
47+
48+
return personalQueues.map((queue) => ({
49+
queueName: queue.name,
50+
isQueueOpen: queue.isOpen,
51+
numOpenTickets: queue.Ticket.length,
52+
}))
53+
}),
54+
3055
createQueue: protectedStaffProcedure
3156
.input(
3257
z.object({

0 commit comments

Comments
 (0)