package com.xfestudio.xfeservermanager.core.trigger;
import java.time.Instant;
import java.util.Objects;
import java.util.UUID;
/** Durable value for one declared trigger variable and one resolved storage key. */
public record TriggerVariableState(
UUID triggerId,
String variableName,
String storage,
String storageKey,
String valueType,
String valueJson,
Instant expiresAt,
long revision,
Instant updatedAt) {
public TriggerVariableState {
Objects.requireNonNull(triggerId, "triggerId");
variableName = required(variableName, "variableName");
storage = required(storage, "storage");
storageKey = required(storageKey, "storageKey");
valueType = required(valueType, "valueType");
valueJson = required(valueJson, "valueJson");
if (revision < 0) throw new IllegalArgumentException("revision must not be negative");
Objects.requireNonNull(updatedAt, "updatedAt");
}
public boolean expiredAt(Instant instant) {
return expiresAt != null && !expiresAt.isAfter(instant);
}
private static String required(String value, String field) {
if (value == null || value.isBlank()) throw new IllegalArgumentException(field + " is required");
return value.strip();
}
}
package com.xfestudio.xfeservermanager.core.trigger;
import java.time.Instant;
import java.util.Objects;
import java.util.UUID;
/** Durable value for one declared trigger variable and one resolved storage key. */
public record TriggerVariableState(
UUID triggerId,
String variableName,
String storage,
String storageKey,
String valueType,
String valueJson,
Instant expiresAt,
long revision,
Instant updatedAt) {
public TriggerVariableState {
Objects.requireNonNull(triggerId, "triggerId");
variableName = required(variableName, "variableName");
storage = required(storage, "storage");
storageKey = required(storageKey, "storageKey");
valueType = required(valueType, "valueType");
valueJson = required(valueJson, "valueJson");
if (revision < 0) throw new IllegalArgumentException("revision must not be negative");
Objects.requireNonNull(updatedAt, "updatedAt");
}
public boolean expiredAt(Instant instant) {
return expiresAt != null && !expiresAt.isAfter(instant);
}
private static String required(String value, String field) {
if (value == null || value.isBlank()) throw new IllegalArgumentException(field + " is required");
return value.strip();
}
}