package cloud.nstart.terravault.ordinis.events.record;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.JsonNode;

import java.time.OffsetDateTime;
import java.util.UUID;

/**
 * Обновление существующей записи. Modeling: новая версия (новый recordId, тот
 * же businessKey) с новой valid_from. Старая версия получила valid_to=newRecord.validFrom.
 *
 * <p>{@code previousData} даёт consumer'у возможность сделать diff.
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public record DictionaryRecordUpdated(
    UUID recordId,
    UUID previousRecordId,
    String businessKey,
    JsonNode data,
    JsonNode previousData,
    String geometryWkt,
    OffsetDateTime validFrom,
    OffsetDateTime validTo,
    OffsetDateTime updatedAt,
    String updatedBy) implements DictionaryRecordEvent {

  @com.fasterxml.jackson.annotation.JsonProperty("type")
  public String type() { return "RecordUpdated"; }
}
