110 lines
4.5 KiB
Java
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();
|
|
}
|
|
} |