package entity;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ForeignKey;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.MapsId;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import com.querydsl.core.annotations.QueryEntity;

@QueryEntity
@Entity(name="UserPT")
@Table(name = "UserPT")
public class UserPT {
    @Id
    @Column(name = "user_id", length = 36, nullable = false)
    public String userid;

    @OneToOne(optional = false, fetch = FetchType.LAZY)
    @MapsId
    @JoinColumn(name = "user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_pt_user"))
    public User user;

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

    @Column(name = "uploaded", nullable = false)
    public long upload;

    @Column(name = "downloaded", nullable = false)
    public long download;

    @Column(name = "ratio", nullable = false, precision = 5, scale = 2)
    public double share;

    @Column(name = "default_seed_path")
    public String farmurl;

    @Column(name = "vip_downloads", nullable = false)
    public int viptime;
}
