UserVerificationToken.java
package cl.tica.portfolio.recipeapi.auth.entities;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToOne;
import jakarta.persistence.PrePersist;
import jakarta.persistence.SequenceGenerator;
import jakarta.persistence.Table;
import jakarta.persistence.Temporal;
import jakarta.persistence.TemporalType;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.UUID;
@Entity
@Table(name = "users_verification_token")
public class UserVerificationToken {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_verification_token_seq")
@SequenceGenerator(name = "users_verification_token_seq", allocationSize = 1)
private Long id;
@NotBlank
@Column(nullable = false)
private String code;
@NotNull
@OneToOne(targetEntity = User.class, fetch = FetchType.EAGER)
@JoinColumn(nullable = false, name = "user_id")
private User user;
@Temporal(TemporalType.TIMESTAMP)
@Column(nullable = false, updatable = false)
private LocalDateTime createdAt;
public UserVerificationToken() {
}
public UserVerificationToken(User user) {
this.user = user;
code = UUID.randomUUID().toString().replace("-", "");
}
@PrePersist
protected void onCreate() {
createdAt = LocalDateTime.now();
}
public Long getId() {
return id;
}
public String getCode() {
return code;
}
public User getUser() {
return user;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
}