PortalStipendEntity.java
package cl.prgm.portaltrip.infrastructure.persistence;
import java.math.BigDecimal;
import java.time.OffsetDateTime;
import java.util.UUID;
import cl.prgm.portaltrip.domain.model.PortalStipendBeat;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
@Entity
@Table(name = "portal_stipends")
public class PortalStipendEntity {
@Id
private UUID id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false)
private UserEntity user;
@Column(nullable = false, precision = 12, scale = 2)
private BigDecimal amount;
@Column(name = "created_at", nullable = false)
private OffsetDateTime createdAt;
protected PortalStipendEntity() {
}
public static PortalStipendEntity create(UserEntity user, BigDecimal amount, OffsetDateTime now) {
PortalStipendEntity entity = new PortalStipendEntity();
entity.id = UUID.randomUUID();
entity.user = user;
entity.amount = amount;
entity.createdAt = now;
return entity;
}
public UUID getId() {
return id;
}
public BigDecimal getAmount() {
return amount;
}
public OffsetDateTime getCreatedAt() {
return createdAt;
}
public PortalStipendBeat toBeat() {
return new PortalStipendBeat(createdAt, amount);
}
}