package com.xfestudio.xfeservermanager.core.trigger;
import java.time.Instant;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
/** Persistent execution summary and optional detailed trace. */
public record TriggerExecutionRecord(
UUID executionId,
UUID triggerId,
long triggerRevision,
String eventType,
String status,
long seed,
Map<String, Object> summary,
String error,
Instant startedAt,
Instant updatedAt,
Instant completedAt,
List<Step> steps) {
public TriggerExecutionRecord {
Objects.requireNonNull(executionId, "executionId");
eventType = eventType == null ? "" : eventType;
status = Objects.requireNonNull(status, "status");
summary = Map.copyOf(summary == null ? Map.of() : summary);
error = error == null ? "" : error;
Objects.requireNonNull(startedAt, "startedAt");
Objects.requireNonNull(updatedAt, "updatedAt");
steps = List.copyOf(steps == null ? List.of() : steps);
}
public record Step(
long sequence,
UUID nodeId,
String kind,
Object result,
Map<String, Object> writes,
int instructions,
Instant createdAt) {
public Step {
kind = Objects.requireNonNull(kind, "kind");
writes = Map.copyOf(writes == null ? Map.of() : writes);
Objects.requireNonNull(createdAt, "createdAt");
}
}
}
package com.xfestudio.xfeservermanager.core.trigger;
import java.time.Instant;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
/** Persistent execution summary and optional detailed trace. */
public record TriggerExecutionRecord(
UUID executionId,
UUID triggerId,
long triggerRevision,
String eventType,
String status,
long seed,
Map<String, Object> summary,
String error,
Instant startedAt,
Instant updatedAt,
Instant completedAt,
List<Step> steps) {
public TriggerExecutionRecord {
Objects.requireNonNull(executionId, "executionId");
eventType = eventType == null ? "" : eventType;
status = Objects.requireNonNull(status, "status");
summary = Map.copyOf(summary == null ? Map.of() : summary);
error = error == null ? "" : error;
Objects.requireNonNull(startedAt, "startedAt");
Objects.requireNonNull(updatedAt, "updatedAt");
steps = List.copyOf(steps == null ? List.of() : steps);
}
public record Step(
long sequence,
UUID nodeId,
String kind,
Object result,
Map<String, Object> writes,
int instructions,
Instant createdAt) {
public Step {
kind = Objects.requireNonNull(kind, "kind");
writes = Map.copyOf(writes == null ? Map.of() : writes);
Objects.requireNonNull(createdAt, "createdAt");
}
}
}