Amélioration structurelle Best Practices Endpoint

This commit is contained in:
DahoudG
2024-09-10 23:44:56 +00:00
parent 57ad010feb
commit e54a74d248
35 changed files with 1296 additions and 1017 deletions

View File

@@ -1,44 +1,52 @@
package com.lions.dev.entity;
import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
import jakarta.persistence.*;
import java.time.LocalDateTime;
import java.util.UUID;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.UuidGenerator;
import java.time.LocalDateTime;
import java.util.UUID;
/**
* Classe de base pour toutes les entités du système AfterWork.
* Cette classe définit les propriétés communes à toutes les entités, telles que
* l'identifiant unique et les informations d'audit (création, mise à jour).
*
* Chaque entité héritant de cette classe aura un identifiant auto-généré,
* et des dates automatiques pour la création et la mise à jour.
*/
@MappedSuperclass
@Getter
@Setter
@MappedSuperclass
public abstract class BaseEntity extends PanacheEntityBase {
public abstract class BaseEntity {
@Id
@UuidGenerator
@Column(name = "id", updatable = false, nullable = false)
private UUID id;
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id; // Identifiant unique de l'entité, généré automatiquement
@Column(name = "created_at", updatable = false)
private LocalDateTime createdAt;
@Column(name = "created_at", updatable = false, nullable = false)
private LocalDateTime createdAt; // Date de création de l'entité
@Column(name = "updated_at")
private LocalDateTime updatedAt;
@Column(name = "created_by")
private String createdBy;
@Column(name = "updated_by")
private String updatedBy;
@Column(name = "updated_at", nullable = false)
private LocalDateTime updatedAt; // Date de la dernière mise à jour de l'entité
/**
* Méthode appelée avant la persistance d'une nouvelle entité dans la base de données.
* Cette méthode définit automatiquement la date de création et de mise à jour.
*/
@PrePersist
protected void onCreate() {
this.createdAt = LocalDateTime.now();
// Logique pour définir `createdBy` à partir du contexte utilisateur
this.updatedAt = LocalDateTime.now();
System.out.println("[LOG] Nouvelle entité créée avec ID : " + this.id + " à " + this.createdAt);
}
/**
* Méthode appelée avant la mise à jour d'une entité existante dans la base de données.
* Cette méthode met à jour automatiquement la date de la dernière mise à jour.
*/
@PreUpdate
protected void onUpdate() {
this.updatedAt = LocalDateTime.now();
// Logique pour définir `updatedBy` à partir du contexte utilisateur
System.out.println("[LOG] Entité mise à jour avec ID : " + this.id + " à " + this.updatedAt);
}
}