package auth.models;
import auth.types.RoleType;
import models.AuditedModel;
import models.UserPreferenceModel;
import play.data.format.Formats;
import play.data.validation.Constraints;
import com.avaje.ebean.Model;
import javax.persistence.*;
import java.util.List;
@Entity
@Table(name = "POS_USER")
public class User extends AuditedModel {
public static final Model.Finder<Long, User> find = new Model.Finder<>(User.class);
@Id
public Integer id;
public String passwordHash;
public String name;
public String username;
@Constraints.Required
@Formats.NonEmpty
@Enumerated(EnumType.STRING)
@Column(nullable = false)
public RoleType role;
@OneToOne(mappedBy = "user", optional = false, cascade = CascadeType.ALL)
public UserPreferenceModel preferences;
public static User findById(Long id) {
return find.byId(id);
}
public static User findByUsername(String username) {
return find.fetch("preferences").where().eq("username", username).findUnique();
}
public static List<User> findAll() {
return find.all();
}
}