feat: PHASE 5.2 - Repositories et DTOs Documentaires
Repositories créés: - DocumentRepository: Recherche par hash MD5/SHA256, type - PieceJointeRepository: Recherche par document, membre, organisation, cotisation, adhésion, demande d'aide, transaction Wave DTOs créés: - DocumentDTO: Validation complète avec contraintes - PieceJointeDTO: Relations flexibles via UUID Respect strict DRY/WOU: - Patterns de repository cohérents - Patterns de DTO cohérents - Relations via UUID pour découplage
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package dev.lions.unionflow.server.repository;
|
||||
|
||||
import dev.lions.unionflow.server.api.enums.document.TypeDocument;
|
||||
import dev.lions.unionflow.server.entity.Document;
|
||||
import io.quarkus.hibernate.orm.panache.PanacheRepository;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Repository pour l'entité Document
|
||||
*
|
||||
* @author UnionFlow Team
|
||||
* @version 3.0
|
||||
* @since 2025-01-29
|
||||
*/
|
||||
@ApplicationScoped
|
||||
public class DocumentRepository implements PanacheRepository<Document> {
|
||||
|
||||
/**
|
||||
* Trouve un document par son hash MD5
|
||||
*
|
||||
* @param hashMd5 Hash MD5
|
||||
* @return Document ou Optional.empty()
|
||||
*/
|
||||
public Optional<Document> findByHashMd5(String hashMd5) {
|
||||
return find("hashMd5 = ?1 AND actif = true", hashMd5).firstResultOptional();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve un document par son hash SHA256
|
||||
*
|
||||
* @param hashSha256 Hash SHA256
|
||||
* @return Document ou Optional.empty()
|
||||
*/
|
||||
public Optional<Document> findByHashSha256(String hashSha256) {
|
||||
return find("hashSha256 = ?1 AND actif = true", hashSha256).firstResultOptional();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve les documents par type
|
||||
*
|
||||
* @param type Type de document
|
||||
* @return Liste des documents
|
||||
*/
|
||||
public List<Document> findByType(TypeDocument type) {
|
||||
return find("typeDocument = ?1 AND actif = true ORDER BY dateCreation DESC", type).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve tous les documents actifs
|
||||
*
|
||||
* @return Liste des documents actifs
|
||||
*/
|
||||
public List<Document> findAllActifs() {
|
||||
return find("actif = true ORDER BY dateCreation DESC").list();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
package dev.lions.unionflow.server.repository;
|
||||
|
||||
import dev.lions.unionflow.server.entity.PieceJointe;
|
||||
import io.quarkus.hibernate.orm.panache.PanacheRepository;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Repository pour l'entité PieceJointe
|
||||
*
|
||||
* @author UnionFlow Team
|
||||
* @version 3.0
|
||||
* @since 2025-01-29
|
||||
*/
|
||||
@ApplicationScoped
|
||||
public class PieceJointeRepository implements PanacheRepository<PieceJointe> {
|
||||
|
||||
/**
|
||||
* Trouve toutes les pièces jointes d'un document
|
||||
*
|
||||
* @param documentId ID du document
|
||||
* @return Liste des pièces jointes
|
||||
*/
|
||||
public List<PieceJointe> findByDocumentId(UUID documentId) {
|
||||
return find("document.id = ?1 ORDER BY ordre ASC", documentId).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve toutes les pièces jointes d'un membre
|
||||
*
|
||||
* @param membreId ID du membre
|
||||
* @return Liste des pièces jointes
|
||||
*/
|
||||
public List<PieceJointe> findByMembreId(UUID membreId) {
|
||||
return find("membre.id = ?1 ORDER BY ordre ASC", membreId).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve toutes les pièces jointes d'une organisation
|
||||
*
|
||||
* @param organisationId ID de l'organisation
|
||||
* @return Liste des pièces jointes
|
||||
*/
|
||||
public List<PieceJointe> findByOrganisationId(UUID organisationId) {
|
||||
return find("organisation.id = ?1 ORDER BY ordre ASC", organisationId).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve toutes les pièces jointes d'une cotisation
|
||||
*
|
||||
* @param cotisationId ID de la cotisation
|
||||
* @return Liste des pièces jointes
|
||||
*/
|
||||
public List<PieceJointe> findByCotisationId(UUID cotisationId) {
|
||||
return find("cotisation.id = ?1 ORDER BY ordre ASC", cotisationId).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve toutes les pièces jointes d'une adhésion
|
||||
*
|
||||
* @param adhesionId ID de l'adhésion
|
||||
* @return Liste des pièces jointes
|
||||
*/
|
||||
public List<PieceJointe> findByAdhesionId(UUID adhesionId) {
|
||||
return find("adhesion.id = ?1 ORDER BY ordre ASC", adhesionId).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve toutes les pièces jointes d'une demande d'aide
|
||||
*
|
||||
* @param demandeAideId ID de la demande d'aide
|
||||
* @return Liste des pièces jointes
|
||||
*/
|
||||
public List<PieceJointe> findByDemandeAideId(UUID demandeAideId) {
|
||||
return find("demandeAide.id = ?1 ORDER BY ordre ASC", demandeAideId).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trouve toutes les pièces jointes d'une transaction Wave
|
||||
*
|
||||
* @param transactionWaveId ID de la transaction Wave
|
||||
* @return Liste des pièces jointes
|
||||
*/
|
||||
public List<PieceJointe> findByTransactionWaveId(UUID transactionWaveId) {
|
||||
return find("transactionWave.id = ?1 ORDER BY ordre ASC", transactionWaveId).list();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user