2022-08-09 15:51:32 +02:00
|
|
|
import { deleteNotes, getExpiredNotes } from "../controllers/note/note.dao";
|
2022-08-09 22:42:03 +02:00
|
|
|
import { getExpiredNoteFilter } from "../lib/expiredNoteFilter";
|
2022-08-09 15:51:32 +02:00
|
|
|
import EventLogger from "../logging/EventLogger";
|
|
|
|
import logger from "../logging/logger";
|
|
|
|
|
2022-08-09 22:42:03 +02:00
|
|
|
export async function deleteExpiredNotes(): Promise<number> {
|
2022-08-09 15:51:32 +02:00
|
|
|
logger.info("[Cleanup] Cleaning up expired notes...");
|
|
|
|
const toDelete = await getExpiredNotes();
|
|
|
|
|
|
|
|
return deleteNotes(toDelete.map((n) => n.id))
|
|
|
|
.then(async (deleteCount) => {
|
|
|
|
const logs = toDelete.map(async (note) => {
|
|
|
|
logger.info(
|
|
|
|
`[Cleanup] Deleted note ${note.id} with size ${
|
|
|
|
note.ciphertext.length + note.hmac.length
|
|
|
|
} bytes`
|
|
|
|
);
|
|
|
|
return EventLogger.purgeEvent({
|
|
|
|
success: true,
|
|
|
|
note_id: note.id,
|
|
|
|
size_bytes: note.ciphertext.length + note.hmac.length,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
await Promise.all(logs);
|
2022-08-09 22:42:03 +02:00
|
|
|
const filter = await getExpiredNoteFilter();
|
|
|
|
await filter.addNoteIds(toDelete.map((n) => n.id));
|
2022-08-09 15:51:32 +02:00
|
|
|
logger.info(`[Cleanup] Deleted ${deleteCount} expired notes.`);
|
|
|
|
return deleteCount;
|
|
|
|
})
|
|
|
|
.catch((err) => {
|
|
|
|
logger.error(`[Cleanup] Error cleaning expired notes:`);
|
|
|
|
logger.error(err);
|
|
|
|
return -1;
|
|
|
|
});
|
|
|
|
}
|
2022-08-09 22:42:03 +02:00
|
|
|
|
|
|
|
export const deleteInterval =
|
|
|
|
Math.max(parseInt(<string>process.env.CLEANUP_INTERVAL_SECONDS) || 1, 1) *
|
|
|
|
1000;
|