Files
documenso/packages/lib/server-only/share/get-recipient-or-sender-by-share-link-slug.ts
2023-11-14 13:08:14 +11:00

48 lines
878 B
TypeScript

import { prisma } from '@documenso/prisma';
export type GetRecipientOrSenderByShareLinkSlugOptions = {
slug: string;
};
export const getRecipientOrSenderByShareLinkSlug = async ({
slug,
}: GetRecipientOrSenderByShareLinkSlugOptions) => {
const { documentId, email } = await prisma.documentShareLink.findFirstOrThrow({
where: {
slug,
},
});
const recipient = await prisma.recipient.findFirst({
where: {
documentId,
email,
},
include: {
Signature: true,
},
});
if (recipient) {
return recipient;
}
const sender = await prisma.user.findFirst({
where: {
Document: { some: { id: documentId } },
email,
},
select: {
email: true,
name: true,
signature: true,
},
});
if (sender) {
return sender;
}
throw new Error('Recipient or sender not found');
};