package ru.mcs.diary.grade;

import jakarta.persistence.*;
import lombok.*;
import ru.mcs.diary.common.BaseEntity;
import ru.mcs.diary.schedule.Lesson;
import ru.mcs.diary.student.Student;

@Entity
@Table(name = "grades", uniqueConstraints = {
        @UniqueConstraint(columnNames = {"lesson_id", "student_id"})
})
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Grade extends BaseEntity {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "lesson_id", nullable = false)
    private Lesson lesson;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "student_id", nullable = false)
    private Student student;

    @Column(name = "grade_value", length = 20)
    private String gradeValue; // "5", "4", "85", etc.

    @Column(name = "grade_text", length = 50)
    private String gradeText; // "Отлично", "Хорошо"

    @Builder.Default
    private Boolean attended = true;

    @Column(columnDefinition = "TEXT")
    private String comment;
}
