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 publisher; @OneToMany(mappedBy = "users") public Collection comment; @OneToMany(mappedBy = "users") public Collection 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(); } }