Add provider metric cleanup job

This commit is contained in:
William Oldham
2023-11-04 13:35:36 +00:00
parent 39c2b0c7fd
commit 07988e7bff
4 changed files with 41 additions and 0 deletions

View File

@@ -37,11 +37,13 @@
"@fastify/cors": "^8.3.0",
"@mikro-orm/core": "^5.9.0",
"@mikro-orm/postgresql": "^5.9.0",
"@types/ms": "^0.7.33",
"cron": "^3.1.5",
"fastify": "^4.21.0",
"fastify-metrics": "^10.3.2",
"fastify-type-provider-zod": "^1.1.9",
"jsonwebtoken": "^9.0.2",
"ms": "^2.1.3",
"nanoid": "^3.3.6",
"neat-config": "^2.0.0",
"node-forge": "^1.3.1",

10
pnpm-lock.yaml generated
View File

@@ -14,6 +14,9 @@ dependencies:
'@mikro-orm/postgresql':
specifier: ^5.9.0
version: 5.9.0(@mikro-orm/core@5.9.0)
'@types/ms':
specifier: ^0.7.33
version: 0.7.33
cron:
specifier: ^3.1.5
version: 3.1.5
@@ -29,6 +32,9 @@ dependencies:
jsonwebtoken:
specifier: ^9.0.2
version: 9.0.2
ms:
specifier: ^2.1.3
version: 2.1.3
nanoid:
specifier: ^3.3.6
version: 3.3.6
@@ -456,6 +462,10 @@ packages:
resolution: {integrity: sha512-/BJF3NT0pRMuxrenr42emRUF67sXwcZCd+S1ksG/Fcf9O7C3kKCY4uJSbKBE4KDUIYr3WMsvfmWD8hRjXExBJQ==}
dev: false
/@types/ms@0.7.33:
resolution: {integrity: sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==}
dev: false
/@types/node-forge@1.3.8:
resolution: {integrity: sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg==}
dependencies:

View File

@@ -1,9 +1,11 @@
import { challengeCodeJob } from '@/modules/jobs/list/challengeCode';
import { sessionExpiryJob } from '@/modules/jobs/list/sessionExpiry';
import { userDeletionJob } from '@/modules/jobs/list/userDeletion';
import { providerMetricCleanupJob } from '@/modules/jobs/list/providerMetricCleanup';
export async function setupJobs() {
challengeCodeJob.start();
sessionExpiryJob.start();
userDeletionJob.start();
providerMetricCleanupJob.start();
}

View File

@@ -0,0 +1,27 @@
import { ProviderMetric } from '@/db/models/ProviderMetrics';
import { job } from '@/modules/jobs/job';
import ms from 'ms';
// every day at 12:00:00
export const providerMetricCleanupJob = job(
'provider-metric-cleanup',
'0 12 * * *',
async ({ em, log }) => {
const now = new Date();
const thirtyDaysAgo = new Date(now.getTime() - ms('30d'));
const deletedMetrics = await em
.createQueryBuilder(ProviderMetric)
.delete()
.where({
createdAt: {
$lt: thirtyDaysAgo,
},
})
.execute<{ affectedRows: number }>('run');
log.info(
`Removed ${deletedMetrics.affectedRows} metrics that were older than 30 days`,
);
},
);