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