Order.java
package io.slayyyyer.orders.domain;
import java.time.Instant;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
public record Order(
UUID id,
UUID customerId,
OrderStatus status,
String currency,
long totalCents,
Instant createdAt,
List<OrderLine> items) {
public Order {
Objects.requireNonNull(id, "id");
Objects.requireNonNull(customerId, "customerId");
Objects.requireNonNull(status, "status");
if (currency == null || currency.length() != 3) {
throw new IllegalArgumentException("currency must be a 3-letter code");
}
if (totalCents < 0) {
throw new IllegalArgumentException("totalCents must not be negative");
}
items = items == null ? List.of() : List.copyOf(items);
}
}