package com.xfestudio.xfeservermanager.core.content;
import java.time.Instant;
import java.util.Objects;
import java.util.UUID;
/** A durable publication intent. PREPARING never implies that disk publication succeeded. */
public record ContentPublication(String id, Status status, ContentWorkspace workspace, String sha256,
Instant createdAt, String createdBy, String error) {
public enum Status { PREPARING, PUBLISHED, ACTIVE, FAILED }
public ContentPublication {
id = UUID.fromString(id).toString();
Objects.requireNonNull(status, "publication status");
Objects.requireNonNull(workspace, "publication workspace");
sha256 = Objects.toString(sha256, "");
if (!sha256.isEmpty() && !sha256.matches("[0-9a-f]{64}")) throw new IllegalArgumentException("invalid publication sha256");
if ((status == Status.PUBLISHED || status == Status.ACTIVE) && sha256.isEmpty()) {
throw new IllegalArgumentException("published content needs a sha256");
}
Objects.requireNonNull(createdAt, "publication createdAt");
createdBy = ContentDefinition.text(createdBy, "publication actor", 1, 128);
error = ContentDefinition.text(error, "publication error", 0, 1024);
}
}
package com.xfestudio.xfeservermanager.core.content;
import java.time.Instant;
import java.util.Objects;
import java.util.UUID;
/** A durable publication intent. PREPARING never implies that disk publication succeeded. */
public record ContentPublication(String id, Status status, ContentWorkspace workspace, String sha256,
Instant createdAt, String createdBy, String error) {
public enum Status { PREPARING, PUBLISHED, ACTIVE, FAILED }
public ContentPublication {
id = UUID.fromString(id).toString();
Objects.requireNonNull(status, "publication status");
Objects.requireNonNull(workspace, "publication workspace");
sha256 = Objects.toString(sha256, "");
if (!sha256.isEmpty() && !sha256.matches("[0-9a-f]{64}")) throw new IllegalArgumentException("invalid publication sha256");
if ((status == Status.PUBLISHED || status == Status.ACTIVE) && sha256.isEmpty()) {
throw new IllegalArgumentException("published content needs a sha256");
}
Objects.requireNonNull(createdAt, "publication createdAt");
createdBy = ContentDefinition.text(createdBy, "publication actor", 1, 128);
error = ContentDefinition.text(error, "publication error", 0, 1024);
}
}