import { prisma } from '@documenso/prisma'; import { DocumentStatus, EnvelopeType } from '@prisma/client'; import { deletedAccountServiceAccount } from '../user/service-accounts/deleted-account'; export type OrphanEnvelopesOptions = { teamId: number; }; export const orphanEnvelopes = async ({ teamId }: OrphanEnvelopesOptions) => { const serviceAccount = await deletedAccountServiceAccount(); // Transfer all inflight and completed envelopes to the service account. await prisma.envelope.updateMany({ where: { teamId, type: EnvelopeType.DOCUMENT, status: { in: [DocumentStatus.PENDING, DocumentStatus.REJECTED, DocumentStatus.COMPLETED], }, deletedAt: null, }, data: { userId: serviceAccount.id, teamId: serviceAccount.ownedOrganisations[0].teams[0].id, deletedAt: new Date(), }, }); // Transfer any remaining deleted envelopes to the service account. await prisma.envelope.updateMany({ where: { teamId, type: EnvelopeType.DOCUMENT, status: { in: [DocumentStatus.PENDING, DocumentStatus.REJECTED, DocumentStatus.COMPLETED], }, }, data: { userId: serviceAccount.id, teamId: serviceAccount.ownedOrganisations[0].teams[0].id, }, }); // Then delete anything remaining across documents and templates. await prisma.envelope.deleteMany({ where: { teamId, }, }); };