feat: persist document metadata in database for a specific user

This commit is contained in:
Ephraim Atta-Duncan
2023-09-20 09:51:04 +00:00
committed by Mythie
parent 9521d1df4c
commit a3baf2ed8b
4 changed files with 85 additions and 7 deletions

View File

@ -5,16 +5,13 @@ import { render } from '@documenso/email/render';
import { DocumentInviteEmailTemplate } from '@documenso/email/templates/document-invite';
import { prisma } from '@documenso/prisma';
import { DocumentStatus, SendStatus } from '@documenso/prisma/client';
import { TAddSubjectFormSchema } from '@documenso/ui/primitives/document-flow/add-subject.types';
export type SendDocumentOptions = TAddSubjectFormSchema & {
export type SendDocumentOptions = {
documentId: number;
userId: number;
};
export const sendDocument = async ({ documentId, userId, email }: SendDocumentOptions) => {
const customEmail = email;
export const sendDocument = async ({ documentId, userId }: SendDocumentOptions) => {
const user = await prisma.user.findFirstOrThrow({
where: {
id: userId,
@ -28,9 +25,12 @@ export const sendDocument = async ({ documentId, userId, email }: SendDocumentOp
},
include: {
Recipient: true,
DocumentMeta: true,
},
});
const customEmail = document?.DocumentMeta;
if (!document) {
throw new Error('Document not found');
}
@ -71,7 +71,9 @@ export const sendDocument = async ({ documentId, userId, email }: SendDocumentOp
name: process.env.NEXT_PRIVATE_SMTP_FROM_NAME || 'Documenso',
address: process.env.NEXT_PRIVATE_SMTP_FROM_ADDRESS || 'noreply@documenso.com',
},
subject: customEmail.subject ? customEmail.subject : 'Please sign this document',
subject: customEmail?.customEmailSubject
? customEmail.customEmailSubject
: 'Please sign this document',
html: render(template),
text: render(template, { plainText: true }),
});

View File

@ -0,0 +1,21 @@
'use server';
import { Prisma } from '@prisma/client';
import { prisma } from '@documenso/prisma';
export type UpdateDocumentOptions = {
documentId: number;
data: Prisma.DocumentUpdateInput;
};
export const updateDocument = async ({ documentId, data }: UpdateDocumentOptions) => {
return await prisma.document.update({
where: {
id: documentId,
},
data: {
...data,
},
});
};