mirror of
https://github.com/umami-software/umami.git
synced 2026-02-04 04:37:11 +01:00
change reset/delete website to interactive transaction with timeout
Some checks failed
Node.js CI / build (push) Has been cancelled
Some checks failed
Node.js CI / build (push) Has been cancelled
Closes #3905
This commit is contained in:
parent
4c0c9e6aa0
commit
b0ed4bddb6
1 changed files with 53 additions and 40 deletions
|
|
@ -132,42 +132,46 @@ export async function updateWebsite(
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function resetWebsite(websiteId: string) {
|
export async function resetWebsite(websiteId: string) {
|
||||||
const { client, transaction } = prisma;
|
const { transaction } = prisma;
|
||||||
const cloudMode = !!process.env.CLOUD_MODE;
|
const cloudMode = !!process.env.CLOUD_MODE;
|
||||||
|
|
||||||
return transaction(
|
return transaction(
|
||||||
[
|
async tx => {
|
||||||
client.revenue.deleteMany({
|
await tx.revenue.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.eventData.deleteMany({
|
|
||||||
|
await tx.eventData.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.sessionData.deleteMany({
|
|
||||||
|
await tx.sessionData.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.websiteEvent.deleteMany({
|
|
||||||
|
await tx.websiteEvent.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.session.deleteMany({
|
|
||||||
|
await tx.session.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.website.update({
|
|
||||||
|
const website = await tx.website.update({
|
||||||
where: { id: websiteId },
|
where: { id: websiteId },
|
||||||
data: {
|
data: {
|
||||||
resetAt: new Date(),
|
resetAt: new Date(),
|
||||||
},
|
},
|
||||||
}),
|
});
|
||||||
],
|
|
||||||
|
return website;
|
||||||
|
},
|
||||||
{
|
{
|
||||||
timeout: 30000,
|
timeout: 30000,
|
||||||
},
|
},
|
||||||
).then(async data => {
|
).then(async data => {
|
||||||
if (cloudMode) {
|
if (cloudMode) {
|
||||||
await redis.client.set(
|
await redis.client.set(`website:${websiteId}`, data);
|
||||||
`website:${websiteId}`,
|
|
||||||
data.find(website => website.id),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
|
@ -175,43 +179,52 @@ export async function resetWebsite(websiteId: string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteWebsite(websiteId: string) {
|
export async function deleteWebsite(websiteId: string) {
|
||||||
const { client, transaction } = prisma;
|
const { transaction } = prisma;
|
||||||
const cloudMode = !!process.env.CLOUD_MODE;
|
const cloudMode = !!process.env.CLOUD_MODE;
|
||||||
|
|
||||||
return transaction(
|
return transaction(
|
||||||
[
|
async tx => {
|
||||||
client.revenue.deleteMany({
|
await tx.revenue.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.eventData.deleteMany({
|
|
||||||
|
await tx.eventData.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.sessionData.deleteMany({
|
|
||||||
|
await tx.sessionData.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.websiteEvent.deleteMany({
|
|
||||||
|
await tx.websiteEvent.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.session.deleteMany({
|
|
||||||
|
await tx.session.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.report.deleteMany({
|
|
||||||
|
await tx.report.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
client.segment.deleteMany({
|
|
||||||
|
await tx.segment.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
});
|
||||||
cloudMode
|
|
||||||
? client.website.update({
|
const website = cloudMode
|
||||||
|
? await tx.website.update({
|
||||||
data: {
|
data: {
|
||||||
deletedAt: new Date(),
|
deletedAt: new Date(),
|
||||||
},
|
},
|
||||||
where: { id: websiteId },
|
where: { id: websiteId },
|
||||||
})
|
})
|
||||||
: client.website.delete({
|
: await tx.website.delete({
|
||||||
where: { id: websiteId },
|
where: { id: websiteId },
|
||||||
}),
|
});
|
||||||
],
|
|
||||||
|
return website;
|
||||||
|
},
|
||||||
{
|
{
|
||||||
timeout: 30000,
|
timeout: 30000,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue