56 lines
1.5 KiB
Java
56 lines
1.5 KiB
Java
package com.example.purchase.domain;
|
|
|
|
import com.example.payment.domain.Payment;
|
|
import com.example.user.domain.User;
|
|
import jakarta.persistence.Entity;
|
|
import jakarta.persistence.EntityListeners;
|
|
import jakarta.persistence.Id;
|
|
import jakarta.persistence.JoinColumn;
|
|
import jakarta.persistence.ManyToOne;
|
|
import java.math.BigDecimal;
|
|
import java.time.LocalDateTime;
|
|
import java.time.ZonedDateTime;
|
|
import java.util.UUID;
|
|
import lombok.AccessLevel;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.NoArgsConstructor;
|
|
import org.springframework.data.annotation.CreatedDate;
|
|
import org.springframework.data.annotation.LastModifiedDate;
|
|
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
|
|
|
@Entity
|
|
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
|
@NoArgsConstructor(access = AccessLevel.PROTECTED)
|
|
@EntityListeners(AuditingEntityListener.class)
|
|
public class Purchase {
|
|
|
|
@Id
|
|
private String id;
|
|
|
|
@ManyToOne
|
|
@JoinColumn
|
|
private User user;
|
|
|
|
private PurchaseType type;
|
|
|
|
private BigDecimal amount;
|
|
|
|
@CreatedDate
|
|
private ZonedDateTime createdAt;
|
|
|
|
@LastModifiedDate
|
|
private ZonedDateTime updatedAt;
|
|
|
|
public String getId() {
|
|
return id;
|
|
}
|
|
|
|
public ZonedDateTime getCreatedAt() {
|
|
return createdAt;
|
|
}
|
|
|
|
public static Purchase of(User user, PurchaseType type, BigDecimal amount, ZonedDateTime createdAt, ZonedDateTime updatedAt) {
|
|
return new Purchase(UUID.randomUUID().toString(), user, type, amount, createdAt, updatedAt);
|
|
}
|
|
}
|