Commit: 188fc92

Commit Details

SHA188fc92ac938e5ecdaaba64fb6d1dbffeba30181
Tree2cc04755c4f7f8be29aafd7e581f1f25e14edd58
Author<f69e50@finnacloud.com> 1766442998 +0300
Committer<f69e50@finnacloud.com> 1766442998 +0300
Message
increment
GPG Signature
-----BEGIN PGP SIGNATURE-----

iQJSBAABCAA8FiEEWJb139mJI+vZ81KkoAIVSUsXI0oFAmlJx/YeHHNvcGhpYS5l
cmFzbGFuQGZpbm5hY2xvdWQuY29tAAoJEKACFUlLFyNKyF8P/j6F8McjkGTBhDFX
frSY0CqkszvNegnZnDj4AkVjoJl7AK0RY0KLLQxrRUJq/MIA/FPj9G7df9jUJcae
TS+tvTZzWOXZ3EXomyNPangFgm5yAgmelwJYgeQdTmzIY3miM8/BdQg10GNC6Fjq
iEn6PKkpkItfiy+vftAABqe73SI9Vn6nwkUn2zVEsXBX1Kmv/ya9auodjFegvcbz
pRx5BL3xNYaA57c8WG9Fx+XaQPdaeLMcu/kM8diY0XTWqtdR+OfrPlU2JOApB0yO
G4P6zG6h5w2XWCqtbqfszDt94drbArJ9cQbWLlgbiNjpK+qJVvG+HGXxPGgvzLA3
9HhZxzUJobkt0MycngmZryj25b6kdO6OA5BCBCjdMkHjIvmBpLXYD5y5uYnerR0n
YEDyB5noRAiYbb2Skg1dp9dpNxq5LF1WkJpWM+nCXlOU6jKj3ucOJ7JP2+gVWA7N
jFdEUIfX65Q9CcBQqQX1vWyGJCc/Z0sNGE0Dc06PrpPk/U10oFNZOdCbUNEWU4Pk
yqATdaAI1BdvZjAip6QQ/jtIuHkwigAk9uUp21VlZ1NnXXLixmA53y12fi8f3DnB
yl55qYeoTOyEg5N7k1ukOt5rgoJ28szscEwvYmwL56uDtlrXly/vrSNrMi322aJK
IJeozLKMpf6Q9A3vN000vGTA6VjP
=Whh7
-----END PGP SIGNATURE-----

✓ Verified

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

1 package com.paymentlink.model.entity;
2
3 import com.fasterxml.jackson.annotation.JsonManagedReference;
4 import jakarta.persistence.*;
5 import lombok.AllArgsConstructor;
6 import lombok.Builder;
7 import lombok.Data;
8 import lombok.NoArgsConstructor;
9 import org.hibernate.annotations.CreationTimestamp;
10 import org.hibernate.annotations.UpdateTimestamp;
11
12 import java.time.LocalDateTime;
13 import java.util.ArrayList;
14 import java.util.List;
15
16 @Entity
17 @Table(name = "payment_links")
18 @Data
19 @NoArgsConstructor
20 @AllArgsConstructor
21 @Builder
22 public class PaymentLink {
23
24 @Id
25 @GeneratedValue(strategy = GenerationType.IDENTITY)
26 private Long id;
27
28 @Column(name = "link_id", unique = true, nullable = false)
29 private String linkId; // Hex format
30
31 @OneToMany(mappedBy = "paymentLink", cascade = CascadeType.ALL, orphanRemoval = true)
32 @Builder.Default
33 @JsonManagedReference
34 private List<PaymentLinkItem> items = new ArrayList<>();
35
36 @Column(nullable = false)
37 private Long amount; // Total amount in cents
38
39 @Column(nullable = false)
40 private Long subtotal; // Subtotal in cents
41
42 @Column(name = "shipping_cost")
43 private Long shippingCost; // In cents
44
45 @Column(name = "tax_amount")
46 private Long taxAmount; // In cents
47
48 @Column(nullable = false, length = 3)
49 private String currency;
50
51 @Column(nullable = false)
52 private String status; // pending, paid, expired, failed
53
54 @Column(name = "order_id")
55 private String orderId;
56
57 @Column(name = "stripe_payment_intent_id")
58 private String stripePaymentIntentId;
59
60 @Column(name = "customer_email")
61 private String customerEmail;
62
63 @Column(name = "customer_name")
64 private String customerName;
65
66 @Column(name = "customer_phone")
67 private String customerPhone;
68
69 @Column(name = "shipping_address")
70 private String shippingAddress;
71
72 @Column(name = "shipping_city")
73 private String shippingCity;
74
75 @Column(name = "shipping_state")
76 private String shippingState;
77
78 @Column(name = "shipping_zip")
79 private String shippingZip;
80
81 @Column(name = "shipping_country")
82 private String shippingCountry;
83
84 @Column(name = "shipping_method")
85 private String shippingMethod;
86
87 @Column(name = "node_id")
88 private String nodeId;
89
90 @CreationTimestamp
91 @Column(name = "created_at", updatable = false)
92 private LocalDateTime createdAt;
93
94 @UpdateTimestamp
95 @Column(name = "updated_at")
96 private LocalDateTime updatedAt;
97
98 // Helper method to add item
99 public void addItem(PaymentLinkItem item) {
100 items.add(item);
101 item.setPaymentLink(this);
102 }
103 }
104
105