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

import java.util.Objects;

/**
 * Ergebnis, wenn die Persistenzaktualisierung nach erfolgreicher Dateisystem-Umbenennung
 * fehlgeschlagen ist.
 * <p>
 * Gibt an, dass die Zieldatei im Dateisystem erfolgreich umbenannt werden konnte, jedoch
 * die anschließende Aktualisierung des Dokument-Stammsatzes in der Persistenz fehlgeschlagen
 * ist. Der Use-Case versucht in diesem Fall, die Dateisystem-Umbenennung rückgängig zu
 * machen (Best-Effort-Rollback).
 * <p>
 * Schlägt auch der Rollback fehl, wird dies auf ERROR-Ebene protokolliert. In jedem Fall
 * bleibt dieses Ergebnis die Rückgabe, sodass der Aufrufer den Benutzer informieren kann.
 *
 * @param message menschenlesbare Beschreibung des Persistenzfehlers; nie null
 */
public record ManualFileRenamePersistenceFailure(String message) implements ManualFileRenameResult {

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