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 = "regions") @Data @NoArgsConstructor @AllArgsConstructor @Builder public class Region { @Id @Column(length = 2, nullable = false) private String countryCode; // ISO 3166-1 alpha-2 (e.g., "US", "FR") @Column(nullable = false) private String countryName; // "United States", "France" @Column(length = 2, nullable = false) private String languageCode; // ISO 639-1 (e.g., "en", "fr") @Column(length = 3, nullable = false) private String currencyCode; // ISO 4217 (e.g., "USD", "EUR") @Column(nullable = false) @Builder.Default private Boolean enabled = false; // Admin can enable/disable countries @CreationTimestamp @Column(name = "created_at", updatable = false) private LocalDateTime createdAt; @UpdateTimestamp @Column(name = "updated_at") private LocalDateTime updatedAt; }