diff --git a/backend/src/worker.ts b/backend/src/worker.ts new file mode 100644 index 0000000..623e82e --- /dev/null +++ b/backend/src/worker.ts @@ -0,0 +1,19 @@ +import { store } from './services/store.js'; +import { deleteFile } from './utils/gdrive.js'; + +async function expireFiles() { + const now = Date.now(); + await store.update(async (db) => { + const toExpire = db.files.filter( + (f) => f.status === 'uploaded' && new Date(f.expiresAt).getTime() <= now, + ); + await Promise.allSettled(toExpire.map((f) => deleteFile(f.gdriveId))); + for (const file of toExpire) { + file.status = 'expired'; + file.deletedAt = new Date().toISOString(); + } + }); +} + +await expireFiles(); +setInterval(expireFiles, 60_000);