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 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;
    @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() {
    }
}