mirror of
https://github.com/movie-web/backend.git
synced 2025-09-13 12:23:25 +00:00
Add provider metric cleanup job
This commit is contained in:
@@ -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
10
pnpm-lock.yaml
generated
@@ -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:
|
||||
|
@@ -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();
|
||||
}
|
||||
|
27
src/modules/jobs/list/providerMetricCleanup.ts
Normal file
27
src/modules/jobs/list/providerMetricCleanup.ts
Normal 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`,
|
||||
);
|
||||
},
|
||||
);
|
Reference in New Issue
Block a user