Files

File: src/main/java/com/paymentlink/model/entity/Region.java

1 package com.paymentlink.model.entity;
2
3 import jakarta.persistence.*;
4 import lombok.AllArgsConstructor;
5 import lombok.Builder;
6 import lombok.Data;
7 import lombok.NoArgsConstructor;
8 import org.hibernate.annotations.CreationTimestamp;
9 import org.hibernate.annotations.UpdateTimestamp;
10
11 import java.time.LocalDateTime;
12
13 @Entity
14 @Table(name = "regions")
15 @Data
16 @NoArgsConstructor
17 @AllArgsConstructor
18 @Builder
19 public class Region {
20
21 @Id
22 @Column(length = 2, nullable = false)
23 private String countryCode; // ISO 3166-1 alpha-2 (e.g., "US", "FR")
24
25 @Column(nullable = false)
26 private String countryName; // "United States", "France"
27
28 @Column(length = 2, nullable = false)
29 private String languageCode; // ISO 639-1 (e.g., "en", "fr")
30
31 @Column(length = 3, nullable = false)
32 private String currencyCode; // ISO 4217 (e.g., "USD", "EUR")
33
34 @Column(nullable = false)
35 @Builder.Default
36 private Boolean enabled = false; // Admin can enable/disable countries
37
38 @CreationTimestamp
39 @Column(name = "created_at", updatable = false)
40 private LocalDateTime createdAt;
41
42 @UpdateTimestamp
43 @Column(name = "updated_at")
44 private LocalDateTime updatedAt;
45 }
46