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

import java.util.Objects;

/**
 * Ergebnis, wenn die bisherige Zieldatei im Zielordner nicht mehr vorhanden ist.
 * <p>
 * Gibt an, dass die in der Persistenz gespeicherte Zieldatei ({@code lastTargetFileName})
 * zum Zeitpunkt des Umbenennungsversuchs nicht mehr im Zielordner existiert. Dies kann
 * eintreten, wenn die Datei zwischenzeitlich von einem externen Prozess gelöscht oder
 * verschoben wurde.
 * <p>
 * Gemäß dem Alles-oder-Nichts-Prinzip wird in diesem Fall die Persistenz nicht
 * aktualisiert.
 *
 * @param expectedFileName der Dateiname (ohne Pfad), der im Zielordner erwartet wurde,
 *                         aber nicht gefunden wurde; nie null
 */
public record ManualFileRenameSourceFileMissing(String expectedFileName) implements ManualFileRenameResult {

    /**
     * Kompakter Konstruktor zur Validierung des Pflichtfelds.
     *
     * @throws NullPointerException wenn {@code expectedFileName} null ist
     */
    public ManualFileRenameSourceFileMissing {
        Objects.requireNonNull(expectedFileName, "expectedFileName must not be null");
    }
}
