package com.openisle.model; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.annotations.CreationTimestamp; import java.time.LocalDateTime; import com.openisle.model.Role; /** * Simple user entity with basic fields and a role. */ @Entity @Getter @Setter @NoArgsConstructor @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String username; @Column(nullable = false, unique = true) private String email; @Column(nullable = false) private String password; @Column(nullable = false) private boolean verified = false; private String verificationCode; private String passwordResetCode; private String avatar; @Column(nullable = false) private int experience = 0; @Column(length = 1000) private String introduction; @Column(length = 1000) private String registerReason; @Column(nullable = false) private boolean approved = true; @Enumerated(EnumType.STRING) @Column(nullable = false) private Role role = Role.USER; @CreationTimestamp @Column(nullable = false, updatable = false, columnDefinition = "DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6)") private LocalDateTime createdAt; }