package com.xfestudio.xfeservermanager.core.trigger;
import java.time.Instant;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
/** Durable continuation for a live V2 execution pinned to one trigger revision. */
public record TriggerExecutionSnapshot(
UUID executionId,
UUID triggerId,
long triggerRevision,
String eventType,
String status,
TriggerProgramExecutor.State state,
Map<String, Object> waitState,
Map<String, Object> summary,
String error,
Instant startedAt,
Instant updatedAt,
Instant completedAt) {
public TriggerExecutionSnapshot {
Objects.requireNonNull(executionId, "executionId");
Objects.requireNonNull(triggerId, "triggerId");
if (triggerRevision < 0) throw new IllegalArgumentException("triggerRevision must not be negative");
eventType = Objects.requireNonNull(eventType, "eventType");
status = Objects.requireNonNull(status, "status");
Objects.requireNonNull(state, "state");
waitState = Map.copyOf(waitState == null ? Map.of() : waitState);
summary = Map.copyOf(summary == null ? Map.of() : summary);
error = error == null ? "" : error;
Objects.requireNonNull(startedAt, "startedAt");
Objects.requireNonNull(updatedAt, "updatedAt");
}
}
package com.xfestudio.xfeservermanager.core.trigger;
import java.time.Instant;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
/** Durable continuation for a live V2 execution pinned to one trigger revision. */
public record TriggerExecutionSnapshot(
UUID executionId,
UUID triggerId,
long triggerRevision,
String eventType,
String status,
TriggerProgramExecutor.State state,
Map<String, Object> waitState,
Map<String, Object> summary,
String error,
Instant startedAt,
Instant updatedAt,
Instant completedAt) {
public TriggerExecutionSnapshot {
Objects.requireNonNull(executionId, "executionId");
Objects.requireNonNull(triggerId, "triggerId");
if (triggerRevision < 0) throw new IllegalArgumentException("triggerRevision must not be negative");
eventType = Objects.requireNonNull(eventType, "eventType");
status = Objects.requireNonNull(status, "status");
Objects.requireNonNull(state, "state");
waitState = Map.copyOf(waitState == null ? Map.of() : waitState);
summary = Map.copyOf(summary == null ? Map.of() : summary);
error = error == null ? "" : error;
Objects.requireNonNull(startedAt, "startedAt");
Objects.requireNonNull(updatedAt, "updatedAt");
}
}