package ru.mcs.dnevnik.userservice.entity;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Data;
import java.time.LocalDateTime;
@Entity
@Table(name = "users")
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank(message = "Username is mandatory")
@Column(unique = true, nullable = false)
private String username;
@NotBlank(message = "First name is mandatory")
@Column(name = "first_name", nullable = false)
private String firstName;
@NotBlank(message = "Last name is mandatory")
@Column(name = "last_name", nullable = false)
private String lastName;
@NotBlank(message = "Patronymic is mandatory")
@Column(nullable = false)
private String patronymic;
@Email(message = "Email should be valid")
@Column(unique = true)
private String email;
private String phone;
@Column(name = "date_of_birth")
private LocalDateTime dateOfBirth;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private UserRole role;
@Column(name = "created_at", updatable = false)
private LocalDateTime createdAt;
@Column(name = "updated_at")
private LocalDateTime updatedAt;
@PrePersist
protected void onCreate() {
createdAt = LocalDateTime.now();
updatedAt = LocalDateTime.now();
}
@PreUpdate
protected void onUpdate() {
updatedAt = LocalDateTime.now();
}
public enum UserRole {
STUDENT, TEACHER, PARENT, ADMIN
}
}