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.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "users") @Getter @Setter @NoArgsConstructor @AllArgsConstructor @ToString @EntityListeners(AuditingEntityListener.class) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long Id; @Column(name = "full_name", nullable = false) private String fullName; @Size(max = 1024) @Column(name = "email", nullable = false, length = 1024, unique = true) private String email; @Column(name = "company") private String company; @Column(nullable = false) @Size(min = 6) @JsonIgnore private String password; @Size(min = 11, max = 14) private String phone; @Enumerated(EnumType.STRING) @Column(name = "subscription_type", nullable = false, length = 20) private SubscriptionType subscriptionType = SubscriptionType.DEMO; @Enumerated(EnumType.STRING) @Column(name = "gender") private GenderType genderType = GenderType.MALE; @Column(name = "birthday") private LocalDate birthday; @CreatedDate @Column(name = "created_at", updatable = false, nullable = false) private LocalDateTime createdAt; @Column(name = "last_login_at") private LocalDateTime lastLoginAt; @Column(name = "is_active") private Boolean isActive = true; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) @JsonIgnore @ToString.Exclude private List tokens = new ArrayList<>(); @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) @JsonIgnore @ToString.Exclude private List userContents = new ArrayList<>(); @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) @JsonIgnore @ToString.Exclude private List userActions = new ArrayList<>(); @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) @JsonIgnore @ToString.Exclude private List violations = new ArrayList<>(); @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) @JsonIgnore @ToString.Exclude private List imageProtections = new ArrayList<>(); }