110 lines
4.5 KiB
Java

package com.covas.Entity;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.covas.Classes.Hash;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.GenericGenerator;
import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
@Entity
@Table(name = "users")
@NamedQueries({
@NamedQuery(name = "Users.byUUIDandRoles", query = "from UsersEntity u where u.id = :id and u.roles = :roles"),
@NamedQuery(name = "Users.byUUIDandStatus", query = "from UsersEntity u where u.id = :id and u.status = :status"),
@NamedQuery(name = "Users.byUUIDandRolesandStatus", query = "from UsersEntity u where u.id = :id and u.roles = :roles and u.status = :status"),
@NamedQuery(name = "Users.byRoles", query = "from UsersEntity u where u.roles = :roles"),
@NamedQuery(name = "Users.byStatus", query = "from UsersEntity u where u.status = :status"),
@NamedQuery(name = "Users.byRolesandStatus", query = "from UsersEntity u where u.roles = :roles and u.status = :status"),
@NamedQuery(name = "Users.byEmailandRoles", query = "from UsersEntity u where u.email = :email and u.roles = :roles"),
@NamedQuery(name = "Users.byEmailandStatus", query = "from UsersEntity u where u.email = :email and u.status = :status"),
@NamedQuery(name = "Users.byEmailandRolesandStatus", query = "from UsersEntity u where u.email = :email and u.roles = :roles and u.status = :status"),
@NamedQuery(name = "Users.bySearch", query = "from UsersEntity u where u.pseudo like :search or u.name like :search or u.firstName like :search"),
@NamedQuery(name = "Users.bySearchandRoles", query = "from UsersEntity u where (u.pseudo like :search or u.name like :search or u.firstName like :search) and u.roles = :roles"),
@NamedQuery(name = "Users.bySearchandStatus", query = "from UsersEntity u where (u.pseudo like :search or u.name like :search or u.firstName like :search) and u.status = :status"),
@NamedQuery(name = "Users.bySearchandRolesandStatus", query = "from UsersEntity u where (u.pseudo like :search or u.name like :search or u.firstName like :search) and u.roles = :roles and u.status = :status")
})
public class UsersEntity extends PanacheEntityBase implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(generator = "UUID")
@GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
public UUID id;
@Column(nullable = false, unique = true)
public String pseudo;
@Column(nullable = false, unique = true)
public String email;
@Column(nullable = false)
public String name;
@Column(nullable = false)
public String firstName;
@Column(nullable = false)
public LocalDate birth;
@ColumnDefault("0")
public Short status;
@Column(nullable = false)
public String password;
@Column(nullable = false)
public String roles;
@Column(nullable = false)
public LocalDateTime created_at;
@Column(nullable = false)
public LocalDateTime updated_at;
@ColumnDefault("null")
public LocalDateTime deleted_at;
@ColumnDefault("null")
public LocalDateTime connected_at;
public String description;
@OneToMany(mappedBy = "users")
public Collection<PublisherEntity> publisher;
@OneToMany(mappedBy = "users")
public Collection<CommentEntity> comment;
@OneToMany(mappedBy = "users")
public Collection<MessageEntity> message;
public static UsersEntity findByPseudo(String pseudo){
return find("pseudo", pseudo).firstResult();
}
public static UsersEntity findByEmail(String email){
return find("email", email).firstResult();
}
public static void add(String pseudo, String email, String name, String firstName, LocalDate birth, String password, String roles){
UsersEntity users = new UsersEntity();
users.pseudo = pseudo;
users.email = email;
users.name = name;
users.firstName = firstName;
users.birth = birth;
users.status = 1;
users.password = Hash.encryptSHA512(password);
users.roles = roles;
users.created_at = LocalDateTime.now();
users.updated_at = LocalDateTime.now();
users.description = "";
users.persist();
}
}