Files

File: src/main/java/com/paymentlink/model/entity/CurrencyRefreshLock.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
9 import java.time.LocalDateTime;
10
11 @Entity
12 @Table(name = "currency_refresh_locks")
13 @Data
14 @NoArgsConstructor
15 @AllArgsConstructor
16 @Builder
17 public class CurrencyRefreshLock {
18
19 @Id
20 @Column(length = 50)
21 @Builder.Default
22 private String lockName = "EXCHANGE_RATE_REFRESH";
23
24 @Column(nullable = false)
25 private LocalDateTime lockedAt;
26
27 @Column(nullable = false)
28 private LocalDateTime expiresAt;
29
30 @Column(length = 100)
31 private String lockedByInstance; // hostname:port for debugging
32
33 @Version
34 private Long version; // Optimistic locking
35 }
36