This is the solution I've come up to:
export const createTicket = (
title: string,
description: string,
name: string,
surname: string,
email: string | null,
phone_number: string | null,
userId?: number
) =>
prisma.ticket.create({
data: {
title,
description,
createdBy: userId ? { connect: { id: userId } } : undefined,
info: {
connectOrCreate: {
where: userId
? { userId }
: { name_surname_phone_number_email: { name, surname, phone_number, email } },
create: { name, surname, email, phone_number, userId }
}
}
}
});
I wasn't aware of the compound unique constraint syntax.