pnp-scheduler/source/Events/Handlers/CleanupEvent.ts

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);
}
}
}
}