refactor(server): use doc model on doc cron job (#10057)

This commit is contained in:
fengmk2
2025-02-10 09:52:44 +00:00
parent e8bac17b3c
commit 0757f29f83
2 changed files with 19 additions and 10 deletions

View File

@@ -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')

View File

@@ -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