38 lines
No EOL
1.1 KiB
TypeScript
38 lines
No EOL
1.1 KiB
TypeScript
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<CleanEvent>(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);
|
|
}
|
|
}
|
|
}
|
|
|
|
} |