package object;

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

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

    @OneToOne(optional = false)
    @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;
}
