aboutsummaryrefslogtreecommitdiffstats
path: root/src/storage/service/storage-cron.service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/storage/service/storage-cron.service.ts')
-rw-r--r--src/storage/service/storage-cron.service.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/storage/service/storage-cron.service.ts b/src/storage/service/storage-cron.service.ts
new file mode 100644
index 0000000..ede6ce9
--- /dev/null
+++ b/src/storage/service/storage-cron.service.ts
@@ -0,0 +1,34 @@
+import { Injectable, Logger } from '@nestjs/common';
+import { StoredFile } from '../entity/stored-file.entity';
+import { LessThan, Repository } from 'typeorm';
+import { InjectRepository } from '@nestjs/typeorm';
+import { Cron } from '@nestjs/schedule';
+
+@Injectable()
+export class StorageCronService {
+ private readonly logger = new Logger(StorageCronService.name);
+
+ constructor(
+ @InjectRepository(StoredFile)
+ private storedFileRepository: Repository<StoredFile>,
+ ) {}
+
+ @Cron('0 30 * * * *')
+ async deleteExpired() {
+ const filesToDelete = await this.storedFileRepository.find({
+ relations: {
+ fileMetadata: true,
+ },
+ where: {
+ fileMetadata: {
+ validUntil: LessThan(new Date(Date.now())),
+ },
+ },
+ });
+
+ if (filesToDelete.length > 0) {
+ await this.storedFileRepository.remove(filesToDelete);
+ this.logger.log(`Deleted ${filesToDelete.length} expired files`);
+ }
+ }
+}