diff --git a/server/src/services/commentService.ts b/server/src/services/commentService.ts index d3f57fe..b078aae 100644 --- a/server/src/services/commentService.ts +++ b/server/src/services/commentService.ts @@ -2,11 +2,10 @@ import prisma from '../lib/prisma'; import { HttpError } from '../lib/httpError'; import * as notificationService from './notificationService'; import { logger } from '../lib/logger'; +import { findByIdOrDisplay } from './ticketService'; export async function addComment(ticketIdOrDisplay: string, body: string, actorId: string) { - const ticket = await prisma.ticket.findFirst({ - where: { OR: [{ id: ticketIdOrDisplay }, { displayId: ticketIdOrDisplay }] }, - }); + const ticket = await findByIdOrDisplay(ticketIdOrDisplay); if (!ticket) throw new HttpError(404, 'Ticket not found'); const [comment] = await prisma.$transaction([ diff --git a/server/src/services/ticketService.ts b/server/src/services/ticketService.ts index 3833922..729ab7b 100644 --- a/server/src/services/ticketService.ts +++ b/server/src/services/ticketService.ts @@ -75,10 +75,12 @@ async function generateDisplayId(): Promise { } } +const idOrDisplayWhere = (idOrDisplay: string): Prisma.TicketWhereInput => ({ + OR: [{ id: idOrDisplay }, { displayId: idOrDisplay }], +}); + export function findByIdOrDisplay(idOrDisplay: string) { - return prisma.ticket.findFirst({ - where: { OR: [{ id: idOrDisplay }, { displayId: idOrDisplay }] }, - }); + return prisma.ticket.findFirst({ where: idOrDisplayWhere(idOrDisplay) }); } export function buildTicketWhere(filters: TicketFilters): Prisma.TicketWhereInput { @@ -143,7 +145,7 @@ export async function listTicketsPaged(filters: TicketFilters, pagination: Pagin export async function getTicket(idOrDisplay: string) { const ticket = await prisma.ticket.findFirst({ - where: { OR: [{ id: idOrDisplay }, { displayId: idOrDisplay }] }, + where: idOrDisplayWhere(idOrDisplay), include: ticketInclude, }); if (!ticket) throw new HttpError(404, 'Ticket not found'); @@ -196,7 +198,7 @@ export async function updateTicket( } const existing = await prisma.ticket.findFirst({ - where: { OR: [{ id: idOrDisplay }, { displayId: idOrDisplay }] }, + where: idOrDisplayWhere(idOrDisplay), include: { category: true, type: true,