package ru.soune.no_copy.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import jakarta.validation.constraints.Size; import lombok.*; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @AllArgsConstructor @NoArgsConstructor @ToString @EqualsAndHashCode @Getter @Setter @EntityListeners(AuditingEntityListener.class) @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long userId; @Size(max = 64) @Column(name = "firstName", nullable = false, length = 64) private String firstName; @Size(max = 64) @Column(name = "lastName", nullable = false, length = 64) private String lastName; @Size(max = 64) @Column(name = "secondName", length = 64) private String secondName; @Size(max = 1024) @Column(name = "email", nullable = false, length = 1024, unique = true) private String email; @Column(nullable = false) @JsonIgnore private String password; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List tokens = new ArrayList<>(); @CreatedDate @Column(name = "created_at", updatable = false, nullable = false) private LocalDateTime createdAt; @Column(name = "is_active") private Boolean isActive = true; }