mirror of
https://github.com/documenso/documenso.git
synced 2025-11-15 09:12:02 +10:00
fix: soft delete a document when the owner deletes it
This commit is contained in:
committed by
Mythie
parent
26ccdc1b23
commit
2837b178fb
@ -138,6 +138,16 @@ const handleDocumentOwnerDelete = async ({
|
|||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Soft delete for document recipients since the owner is deleting it
|
||||||
|
await tx.recipient.updateMany({
|
||||||
|
where: {
|
||||||
|
documentId: document.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
documentDeletedAt: new Date().toISOString(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
return await tx.document.update({
|
return await tx.document.update({
|
||||||
where: {
|
where: {
|
||||||
id: document.id,
|
id: document.id,
|
||||||
|
|||||||
@ -338,7 +338,7 @@ const findDocumentsFilter = (status: ExtendedDocumentStatus, user: User) => {
|
|||||||
teamId: null,
|
teamId: null,
|
||||||
status: ExtendedDocumentStatus.COMPLETED,
|
status: ExtendedDocumentStatus.COMPLETED,
|
||||||
deletedAt: {
|
deletedAt: {
|
||||||
not: null,
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -347,7 +347,7 @@ const findDocumentsFilter = (status: ExtendedDocumentStatus, user: User) => {
|
|||||||
some: {
|
some: {
|
||||||
email: user.email,
|
email: user.email,
|
||||||
documentDeletedAt: {
|
documentDeletedAt: {
|
||||||
not: null,
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -539,7 +539,7 @@ const findTeamDocumentsFilter = (
|
|||||||
{
|
{
|
||||||
teamId: team.id,
|
teamId: team.id,
|
||||||
deletedAt: {
|
deletedAt: {
|
||||||
not: null,
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -552,7 +552,7 @@ const findTeamDocumentsFilter = (
|
|||||||
email: teamEmail,
|
email: teamEmail,
|
||||||
},
|
},
|
||||||
deletedAt: {
|
deletedAt: {
|
||||||
not: null,
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -560,7 +560,7 @@ const findTeamDocumentsFilter = (
|
|||||||
some: {
|
some: {
|
||||||
email: teamEmail,
|
email: teamEmail,
|
||||||
documentDeletedAt: {
|
documentDeletedAt: {
|
||||||
not: null,
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -152,11 +152,38 @@ const getCounts = async ({ user, createdAt }: GetCountsOption) => {
|
|||||||
_all: true,
|
_all: true,
|
||||||
},
|
},
|
||||||
where: {
|
where: {
|
||||||
userId: user.id,
|
OR: [
|
||||||
createdAt,
|
{
|
||||||
deletedAt: {
|
userId: user.id,
|
||||||
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
deletedAt: {
|
||||||
},
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
status: ExtendedDocumentStatus.PENDING,
|
||||||
|
Recipient: {
|
||||||
|
some: {
|
||||||
|
email: user.email,
|
||||||
|
signingStatus: SigningStatus.SIGNED,
|
||||||
|
documentDeletedAt: {
|
||||||
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
status: ExtendedDocumentStatus.COMPLETED,
|
||||||
|
Recipient: {
|
||||||
|
some: {
|
||||||
|
email: user.email,
|
||||||
|
signingStatus: SigningStatus.SIGNED,
|
||||||
|
documentDeletedAt: {
|
||||||
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
@ -273,19 +300,36 @@ const getTeamCounts = async (options: GetTeamCountsOption) => {
|
|||||||
where: {
|
where: {
|
||||||
userId: userIdWhereClause,
|
userId: userIdWhereClause,
|
||||||
createdAt,
|
createdAt,
|
||||||
status: ExtendedDocumentStatus.COMPLETED,
|
OR: [
|
||||||
Recipient: {
|
{
|
||||||
some: {
|
status: ExtendedDocumentStatus.PENDING,
|
||||||
email: teamEmail,
|
Recipient: {
|
||||||
signingStatus: SigningStatus.SIGNED,
|
some: {
|
||||||
documentDeletedAt: {
|
email: teamEmail,
|
||||||
|
signingStatus: SigningStatus.SIGNED,
|
||||||
|
documentDeletedAt: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
deletedAt: {
|
||||||
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
{
|
||||||
deletedAt: {
|
status: ExtendedDocumentStatus.COMPLETED,
|
||||||
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
Recipient: {
|
||||||
},
|
some: {
|
||||||
|
email: teamEmail,
|
||||||
|
signingStatus: SigningStatus.SIGNED,
|
||||||
|
documentDeletedAt: {
|
||||||
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
deletedAt: {
|
||||||
|
gte: DateTime.now().minus({ days: 30 }).startOf('day').toJSDate(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
} satisfies Prisma.DocumentGroupByArgs;
|
} satisfies Prisma.DocumentGroupByArgs;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user