clean up unfinished files

This commit is contained in:
renzynx 2022-12-22 19:02:19 +07:00
parent b87749727e
commit 500cea35eb
4 changed files with 71 additions and 0 deletions

View File

@ -33,6 +33,7 @@
"class-transformer": "^0.5.1",
"class-validator": "^0.13.2",
"connect-redis": "^6.1.3",
"cron": "^2.1.0",
"express-session": "^1.17.3",
"fast-folder-size": "^1.7.1",
"hbs": "^4.2.0",
@ -54,6 +55,7 @@
"@nestjs/testing": "^9.0.0",
"@types/body-parser": "^1",
"@types/connect-redis": "^0.0.19",
"@types/cron": "^2",
"@types/express": "^4.17.13",
"@types/express-session": "^1",
"@types/jest": "28.1.8",

33
api/src/lib/clean.ts Normal file
View File

@ -0,0 +1,33 @@
import { uploadDir } from "./constants";
import { promises as fs } from "fs";
import { CronJob } from "cron";
import { join } from "path";
const cleanUp = async () => {
// find files start with tmp_ that are older than 24 hours
const tmpFiles = (await fs.readdir(uploadDir))
.filter((file) => file.startsWith("tmp_"))
.filter(async (file) => {
const { birthtime } = await fs.stat(join(uploadDir, file));
return Date.now() - birthtime.getTime() > 1000 * 60 * 60 * 24;
});
const currentTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
const job = new CronJob(
// every 24 hours
"0 0 * * *",
async () => {
for (const file of tmpFiles) {
await fs.unlink(join(uploadDir, file));
}
},
null,
true,
currentTimeZone
);
job.start();
};
cleanUp();

View File

@ -11,6 +11,7 @@ import session from "express-session";
import helmet from "helmet";
import bp from "body-parser";
import "./lib/setup";
import "./lib/clean";
async function bootstrap() {
const startTime = Date.now();

View File

@ -1287,6 +1287,16 @@ __metadata:
languageName: node
linkType: hard
"@types/cron@npm:^2":
version: 2.0.0
resolution: "@types/cron@npm:2.0.0"
dependencies:
"@types/luxon": "*"
"@types/node": "*"
checksum: 392d2cfca51504140397533c30be8facd2196251074eb26ee09232a7e983144ff1d8364cd64922ed22d142686a4724934a70672fc8353b441fea729ac0ed0611
languageName: node
linkType: hard
"@types/eslint-scope@npm:^3.7.3":
version: 3.7.4
resolution: "@types/eslint-scope@npm:3.7.4"
@ -1413,6 +1423,13 @@ __metadata:
languageName: node
linkType: hard
"@types/luxon@npm:*":
version: 3.1.0
resolution: "@types/luxon@npm:3.1.0"
checksum: 04768029342ad76fc2a9339436c143ea64797b35cf9b03ddded787c13eae30f0ca1246e51c2c5365ed912f98068e13a967a3931b137eb4585248a0ad7ec3fa86
languageName: node
linkType: hard
"@types/mime-types@npm:^2":
version: 2.1.1
resolution: "@types/mime-types@npm:2.1.1"
@ -2069,6 +2086,7 @@ __metadata:
"@prisma/client": latest
"@types/body-parser": ^1
"@types/connect-redis": ^0.0.19
"@types/cron": ^2
"@types/express": ^4.17.13
"@types/express-session": ^1
"@types/jest": 28.1.8
@ -2085,6 +2103,7 @@ __metadata:
class-transformer: ^0.5.1
class-validator: ^0.13.2
connect-redis: ^6.1.3
cron: ^2.1.0
eslint: ^8.29.0
eslint-config-prettier: ^8.3.0
eslint-plugin-prettier: ^4.0.0
@ -3151,6 +3170,15 @@ __metadata:
languageName: node
linkType: hard
"cron@npm:^2.1.0":
version: 2.1.0
resolution: "cron@npm:2.1.0"
dependencies:
luxon: ^1.23.x
checksum: 9395875c091f56db7964491c249cb143d2e4ba77560d7132da783943c1b0537ef1814eb8f552c81eda5a2aa153216dd3f5b7ff63e372a68a063fcfafe8231f91
languageName: node
linkType: hard
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
@ -5682,6 +5710,13 @@ __metadata:
languageName: node
linkType: hard
"luxon@npm:^1.23.x":
version: 1.28.0
resolution: "luxon@npm:1.28.0"
checksum: 5250cb9f138b6048eeb0b3a9044a4ac994d0058f680c72a0da4b6aeaec8612460385639cba2b1052ef6d5564879e9ed144d686f26d9d97b38ab920d82e18281c
languageName: node
linkType: hard
"macos-release@npm:^2.5.0":
version: 2.5.0
resolution: "macos-release@npm:2.5.0"