Skip to content

Commit b7d2c33

Browse files
committed
cleanup webhook logs
1 parent c62d460 commit b7d2c33

3 files changed

Lines changed: 64 additions & 1 deletion

File tree

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { cronJob } from "./cron.utils"
2+
import { prisma } from "../utils/prisma"
3+
import dayjs from "dayjs"
4+
5+
export const cleanupWebhookLogsCron = cronJob(
6+
"cleanup-webhook-logs",
7+
async () => {
8+
const organizations = await prisma.organization.findMany({
9+
include: {
10+
GeneralSettings: true,
11+
},
12+
})
13+
14+
let totalDeletedLogs = 0
15+
16+
for (const org of organizations) {
17+
const cleanupIntervalDays = org.GeneralSettings?.cleanupInterval ?? 90
18+
const cleanupOlderThanDate = dayjs()
19+
.subtract(cleanupIntervalDays, "days")
20+
.toDate()
21+
22+
try {
23+
const deletedResult = await prisma.webhookLog.deleteMany({
24+
where: {
25+
Webhook: {
26+
organizationId: org.id,
27+
},
28+
createdAt: {
29+
lt: cleanupOlderThanDate,
30+
},
31+
},
32+
})
33+
34+
if (deletedResult.count > 0) {
35+
console.log(
36+
`Webhook logs cleanup for org ${org.id}: Deleted ${deletedResult.count} logs older than ${cleanupIntervalDays} days.`
37+
)
38+
totalDeletedLogs += deletedResult.count
39+
}
40+
} catch (error) {
41+
console.error(`Error deleting webhook logs for org ${org.id}: ${error}`)
42+
continue
43+
}
44+
}
45+
46+
if (totalDeletedLogs > 0) {
47+
console.log(
48+
`Webhook logs cleanup job finished. Total deleted logs: ${totalDeletedLogs}.`
49+
)
50+
} else {
51+
console.log("Webhook logs cleanup job finished. No logs to delete.")
52+
}
53+
}
54+
)

apps/backend/src/cron/cron.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import cron from "node-cron"
22
import { sendMessagesCron } from "./sendMessages"
33
import { dailyMaintenanceCron } from "./dailyMaintenance"
44
import { processQueuedCampaigns } from "./processQueuedCampaigns"
5+
import { cleanupWebhookLogsCron } from "./cleanupWebhookLogs"
56

67
type CronJob = {
78
name: string
@@ -31,10 +32,18 @@ const processQueuedCampaignsJob: CronJob = {
3132
enabled: true,
3233
}
3334

35+
const cleanupWebhookLogsJob: CronJob = {
36+
name: "cleanup-webhook-logs",
37+
schedule: "0 1 * * *", // Runs daily at 1 AM
38+
job: cleanupWebhookLogsCron,
39+
enabled: true,
40+
}
41+
3442
const cronJobs: CronJob[] = [
3543
sendMessagesJob,
3644
dailyMaintenanceJob,
3745
processQueuedCampaignsJob,
46+
cleanupWebhookLogsJob,
3847
]
3948

4049
export const initializeCronJobs = () => {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.9.20-beta.4",
2+
"version": "0.9.20-beta.5",
33
"name": "letterspace",
44
"private": true,
55
"scripts": {

0 commit comments

Comments
 (0)