From 0757f29f83dd3a7c3c5516416cdca8a33a9c869e Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Mon, 10 Feb 2025 09:52:44 +0000 Subject: [PATCH] refactor(server): use doc model on doc cron job (#10057) --- packages/backend/server/src/core/doc/job.ts | 14 ++++---------- packages/backend/server/src/models/doc.ts | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/backend/server/src/core/doc/job.ts b/packages/backend/server/src/core/doc/job.ts index f9e384369..10f0f52bd 100644 --- a/packages/backend/server/src/core/doc/job.ts +++ b/packages/backend/server/src/core/doc/job.ts @@ -1,33 +1,27 @@ import { Injectable } from '@nestjs/common'; import { Cron, CronExpression } from '@nestjs/schedule'; -import { PrismaClient } from '@prisma/client'; import { metrics, OnEvent } from '../../base'; +import { Models } from '../../models'; import { PgWorkspaceDocStorageAdapter } from './adapters/workspace'; @Injectable() export class DocStorageCronJob { constructor( - private readonly db: PrismaClient, + private readonly models: Models, private readonly workspace: PgWorkspaceDocStorageAdapter ) {} @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT /* everyday at 12am */) async cleanupExpiredHistory() { - await this.db.snapshotHistory.deleteMany({ - where: { - expiredAt: { - lte: new Date(), - }, - }, - }); + await this.models.doc.deleteExpiredHistories(); } @Cron(CronExpression.EVERY_MINUTE) async reportUpdatesQueueCount() { metrics.doc .gauge('updates_queue_count') - .record(await this.db.update.count()); + .record(await this.models.doc.getGlobalUpdateCount()); } @OnEvent('user.deleted') diff --git a/packages/backend/server/src/models/doc.ts b/packages/backend/server/src/models/doc.ts index d91edc928..b631f04c5 100644 --- a/packages/backend/server/src/models/doc.ts +++ b/packages/backend/server/src/models/doc.ts @@ -265,6 +265,21 @@ export class DocModel extends BaseModel { }; } + /** + * Delete expired histories. + */ + async deleteExpiredHistories() { + const { count } = await this.db.snapshotHistory.deleteMany({ + where: { + expiredAt: { + lte: new Date(), + }, + }, + }); + this.logger.log(`Deleted ${count} expired histories`); + return count; + } + // #endregion // #region Doc