package entity;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import java.util.Date;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import com.querydsl.core.annotations.QueryEntity;

@QueryEntity
@Entity(name = "User")
@Table(name = "User")
public class User {
    @Id
    @Column(name = "user_id", length = 36, nullable = false)
    public String userid;
    @Column(name = "email", nullable = false, length = 255, unique = true)
    public String email;
    @Column(name = "username", length = 100, nullable = false)
    public String username;
    @Column(name = "password", length = 255, nullable = false)
    public String password;
    @Column(name = "gender", nullable = false)
    public String sex;

    @Column(name = "detectedCount", nullable = false)
    public int detectedCount = 0;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "lastDetectedTime", nullable = false)
    public Date lastDetectedTime = new Date();

    @Column(name = "fake_detected_count", nullable = false)
    public int fakeDetectedCount = 0;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "fake_last_detected_time", nullable = false)
    public Date fakeLastDetectedTime = new Date();

    @Transient
    public String age;
    @Column(name = "school")
    public String school;
    @Column(name = "avatar_url")
    public String pictureurl;
    @Column(name = "bio")
    public String profile;
    @Column(name = "account_status", nullable = false)
    public boolean accountstate;
    @Column(name = "invite_left", nullable = false)
    public int invitetimes;
    @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
    public UserPT userPT;

    // Constructors, getters, setters
    public User() {
    }
}