package example;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(name="purchase_order")
public class PurchaseOrder {
    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="order_ids")
    @SequenceGenerator(name="order_ids", sequenceName="order_seq", allocationSize=1)
    private Long id;
    @Version private Long version;
    @Column(name="external_key", nullable=false, unique=true, length=80)
    private String externalKey;
    @Column(nullable=false, length=120) private String title;
    @Column(name="amount_cents", nullable=false) private long amountCents;
    @OneToMany(mappedBy="order", cascade=CascadeType.ALL, orphanRemoval=true)
    private List<OrderLine> lines = new ArrayList<>();
    protected PurchaseOrder() {}
    public PurchaseOrder(String key, String title, long cents) {
        this.externalKey=key; this.title=title; this.amountCents=cents;
    }
    public Long getId() { return id; }
    public Long getVersion() { return version; }
    public String getTitle() { return title; }
    public void setTitle(String value) { title=value; }
    public long getAmountCents() { return amountCents; }
    public void setAmountCents(long value) { amountCents=value; }
    public List<OrderLine> getLines() { return lines; }
    public void addLine(String sku) { var line=new OrderLine(this,sku); lines.add(line); }
    public void removeLine(OrderLine line) { lines.remove(line); line.clearOrder(); }
}
