import {EventConfiguration, EventType, TimedEvent} from "../EventHandler.types"; import {EventHandler} from "../EventHandler"; import {Logger} from "log4js"; import {CleanEvent} from "../EventClasses/CleanEvent"; export class CleanupEvent implements TimedEvent { type: EventType.TimeBased = EventType.TimeBased; configuration: EventConfiguration = { name: "Cleanup event", }; cronExpression: string = "0 5 * * *"; constructor( private readonly eventHandler: EventHandler, private readonly logger: Logger ) {} public execute(): void { this.logger.info("Issue cleanup...") this.eventHandler.dispatch(new CleanEvent()); this.cleanEvents(); } private cleanEvents(): void { const eventHandlers = this.eventHandler.EventHandlers; for (let [eventClass, entries] of eventHandlers.entries()) { for (let [id, entry] of entries.entries()) { if (entry.persistent) { continue; } this.eventHandler.removeHandler(eventClass, id); } } } }