OrderLineEntity.java
package com.example.orderplatform.orders.infrastructure;
import com.example.orderplatform.orders.domain.OrderLineDraft;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.math.BigDecimal;
import java.util.UUID;
@Entity
@Table(name = "order_lines")
public class OrderLineEntity {
@Id
private UUID id;
@ManyToOne(optional = false)
@JoinColumn(name = "order_id")
private OrderEntity order;
private String productCode;
private int quantity;
private BigDecimal unitAmount;
private String currency;
protected OrderLineEntity() {
}
private OrderLineEntity(UUID id, OrderEntity order, String productCode, int quantity, BigDecimal unitAmount, String currency) {
this.id = id;
this.order = order;
this.productCode = productCode;
this.quantity = quantity;
this.unitAmount = unitAmount;
this.currency = currency;
}
static OrderLineEntity from(OrderEntity order, OrderLineDraft line) {
return new OrderLineEntity(
UUID.randomUUID(),
order,
line.productCode(),
line.quantity(),
line.unitPrice().amount(),
line.unitPrice().currency());
}
public String productCode() {
return productCode;
}
public int quantity() {
return quantity;
}
public BigDecimal unitAmount() {
return unitAmount;
}
public String currency() {
return currency;
}
}