package com.paymentlink.model.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; import java.time.LocalDateTime; @Entity @Table(name = "products") @Data @NoArgsConstructor @AllArgsConstructor @Builder public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(columnDefinition = "TEXT") private String description; @Column(nullable = false) private Long price; // Price in cents @Column(nullable = false, length = 3) private String currency; private String image; private Integer stock; // null means unlimited private String category; @Column(name = "tax_included") private Boolean taxIncluded; @Column(name = "node_id") private String nodeId; @Column(name = "available_in_countries", columnDefinition = "TEXT") private String availableInCountries; // JSON array: ["US", "CA", "GB"]. If null, available in all enabled regions @CreationTimestamp @Column(name = "created_at", updatable = false) private LocalDateTime createdAt; @UpdateTimestamp @Column(name = "updated_at") private LocalDateTime updatedAt; }