package de.gecheckt.pdf.umbenenner.application.dto;

import java.util.Objects;

/**
 * Composite-Key fuer einen Modell-Preis-Eintrag.
 *
 * <p>Identifiziert einen Eintrag in {@code model_price} ueber den
 * Composite Primary Key {@code (provider, model_name)}. Wird in
 * {@link ModelPriceChangeSet#deletions()} verwendet, um Loeschungen
 * unabhaengig von Wertdaten auszudruecken.
 *
 * @param provider  Provider-Identifikator; nicht leer
 * @param modelName Modellname; nicht leer
 */
public record ModelPriceKey(String provider, String modelName) {

    /**
     * Kompakter Konstruktor mit Nicht-Leer-Pruefung.
     *
     * @throws NullPointerException     wenn ein Feld {@code null} ist
     * @throws IllegalArgumentException wenn Provider oder Modellname leer ist
     */
    public ModelPriceKey {
        Objects.requireNonNull(provider, "provider");
        Objects.requireNonNull(modelName, "modelName");
        if (provider.isBlank()) {
            throw new IllegalArgumentException("provider darf nicht leer sein");
        }
        if (modelName.isBlank()) {
            throw new IllegalArgumentException("modelName darf nicht leer sein");
        }
    }
}
