package zw.qantra.tm.domain.models; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.annotations.SQLRestriction; import zw.qantra.tm.domain.enums.GroupBatchItemConfirmStatus; import zw.qantra.tm.domain.enums.GroupBatchItemIntegrationStatus; import zw.qantra.tm.domain.enums.GroupBatchItemStatus; import java.math.BigDecimal; import java.util.UUID; @Entity @Table(name = "group_batch_item", indexes = { @Index(name = "idx_gbi_batch_id", columnList = "group_batch_id"), @Index(name = "idx_gbi_batch_confirm", columnList = "group_batch_id, confirm_status"), @Index(name = "idx_gbi_batch_integ", columnList = "group_batch_id, integration_status"), @Index(name = "idx_gbi_txn_id", columnList = "transaction_id"), }) @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor @SQLRestriction("deleted = false") public class GroupBatchItem extends BaseEntity { @Column(name = "group_batch_id") private UUID groupBatchId; @Column(name = "recipient_id") private UUID recipientId; @Column(name = "recipient_name") private String recipientName; @Column(name = "recipient_phone") private String recipientPhone; private String recipientAccount; private BigDecimal amount; @Enumerated(EnumType.STRING) private GroupBatchItemStatus status; @Enumerated(EnumType.STRING) @Column(name = "confirm_status") private GroupBatchItemConfirmStatus confirmStatus; @Enumerated(EnumType.STRING) @Column(name = "integration_status") private GroupBatchItemIntegrationStatus integrationStatus; @Column(columnDefinition = "TEXT") private String confirmError; @Column(columnDefinition = "TEXT") private String integrationError; @ManyToOne @JoinColumn(name = "transaction_id") private Transaction transaction; private String billClientId; private String billName; private String billProductName; private String providerImage; private String providerLabel; private String creditAddress; }