package lsgwr.exam.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.Date;

/**
 * Question实体类，用于表示考试题目信息
 * 该类使用了Lombok的@Data注解自动生成getter和setter方法，
 * 以及Hibernate的@Entity注解表明这是一个JPA实体类
 *  &#064;DynamicUpdate注解用于在更新实体时只更新发生变化的字段
 */
@Data
@Entity
@DynamicUpdate
public class Question {
    /**
     * 题目ID，主键
     */
    @Id
    private String questionId;

    /**
     * 题目名称
     */
    private String questionName;

    /**
     * 题目分数
     */
    private Integer questionScore;

    /**
     * 创建题目的用户ID
     */
    private String questionCreatorId;

    /**
     * 题目难度等级ID
     */
    private Integer questionLevelId;

    /**
     * 题目类型ID
     */
    private Integer questionTypeId;

    /**
     * 题目分类ID
     */
    private Integer questionCategoryId;

    /**
     * 题目描述
     */
    private String questionDescription;

    /**
     * 题目选项IDs
     */
    private String questionOptionIds;

    /**
     * 题目答案选项IDs
     */
    private String questionAnswerOptionIds;

    /**
     * 创建时间, 设计表时设置了自动插入当前时间，无需在Java代码中设置了
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间，设计表时设置了自动插入当前时间，无需在Java代码中设置了。
     * 同时@DynamicUpdate注解可以时间当数据库数据变化时自动更新，无需人工维护
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
}
