package ru.soune.nocopy.entity.payout; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.*; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; import ru.soune.nocopy.entity.user.User; import java.math.BigDecimal; import java.time.LocalDateTime; @Entity @Table(name = "payout_requests") @Data @Builder @NoArgsConstructor @AllArgsConstructor @Getter public class PayoutRequest { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "payout_method_id") @JsonIgnore private PayoutMethod payoutMethod; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") @JsonIgnore private User user; @Column(nullable = false) private BigDecimal amount; @Enumerated(EnumType.STRING) @Column(nullable = false) private PayoutRequestStatus status; @Enumerated(EnumType.STRING) @Column(nullable = false, name = "payout_type") @JsonIgnore private PayoutType payoutType; @Column(name = "process_at") private LocalDateTime processAt; @Column(name = "completed_at") private LocalDateTime completedAt; @Column(name = "rejection_reason") private String rejectionReason; @CreationTimestamp @Column(name = "created_at", updatable = false) private LocalDateTime createdAt; @UpdateTimestamp @Column(name = "updated_at") private LocalDateTime updatedAt; }