package de.gecheckt.pdf.umbenenner.application.port.out;

/**
 * Betriebskonfiguration für den automatischen Scheduler.
 * <p>
 * Enthält ausschließlich die für den Scheduler-Betrieb relevanten
 * Laufzeitparameter. Die Konfiguration wird beim Start des Schedulers
 * an {@link SchedulerPort#startScheduler(SchedulerConfig, BatchRunTrigger)}
 * übergeben und bleibt für die Dauer des Scheduler-Betriebs unverändert.
 *
 * @param intervalSeconds Wartezeit in Sekunden zwischen dem Ende eines
 *                        Laufs und dem Beginn des nächsten Ticks;
 *                        muss mindestens 30 betragen
 */
public record SchedulerConfig(int intervalSeconds) {

    /**
     * Validiert, dass das Intervall mindestens 30 Sekunden beträgt.
     */
    public SchedulerConfig {
        if (intervalSeconds < 30) {
            throw new IllegalArgumentException(
                    "Scheduler-Intervall muss mindestens 30 Sekunden betragen, war: " + intervalSeconds);
        }
    }
}
