diff --git a/src/main/java/fr/clelia/avis/initialisation/AjoutDonneesInitiales.java b/src/main/java/fr/clelia/avis/initialisation/AjoutDonneesInitiales.java index 0b499da..cf05932 100644 --- a/src/main/java/fr/clelia/avis/initialisation/AjoutDonneesInitiales.java +++ b/src/main/java/fr/clelia/avis/initialisation/AjoutDonneesInitiales.java @@ -1,13 +1,7 @@ package fr.clelia.avis.initialisation; -import fr.clelia.avis.business.Editeur; -import fr.clelia.avis.business.Jeu; -import fr.clelia.avis.business.Joueur; -import fr.clelia.avis.business.Plateforme; -import fr.clelia.avis.repository.EditeurRepository; -import fr.clelia.avis.repository.PlateformeRepository; -import fr.clelia.avis.repository.JeuRepository; -import fr.clelia.avis.repository.JoueurRepository; +import fr.clelia.avis.business.*; +import fr.clelia.avis.repository.*; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; @@ -32,6 +26,8 @@ public class AjoutDonneesInitiales { private JeuRepository jeuRepository; @Autowired private JoueurRepository joueurRepository; + @Autowired + private ModerateurRepository moderateurRepository; @EventListener(ApplicationReadyEvent.class) public void init() { @@ -40,7 +36,9 @@ public class AjoutDonneesInitiales { ajouterPlateformes(); ajouterJeux(); ajouterJoueurs(); + ajouteurModerateur(); afficherStatistiques(); + // afficherJeuxSurPlateforme("Steam"); } private void afficherStatistiques() { @@ -48,6 +46,7 @@ public class AjoutDonneesInitiales { .forEach(System.out::println); plateformeRepository.findByNomStartsWith("Nintendo") .forEach(System.out::println); + // editeurRepository.findEditeurWithoutJeux(); } private void ajouterEditeurs() { @@ -209,4 +208,15 @@ public class AjoutDonneesInitiales { } + private void ajouteurModerateur() { + moderateurRepository.save(new Moderateur("Fx", "Fx@soprasteria.com", "12345", "+33777777777")); + } + + private void afficherJeuxSurPlateforme(String nomPlateforme) { + List jeux = jeuRepository.findJeuxByPlateforme(nomPlateforme); + + System.out.println("Jeux disponibles sur " + nomPlateforme + " :"); + jeux.forEach(System.out::println); + } + } diff --git a/src/main/java/fr/clelia/avis/repository/EditeurRepository.java b/src/main/java/fr/clelia/avis/repository/EditeurRepository.java index fca50d7..9f16c90 100644 --- a/src/main/java/fr/clelia/avis/repository/EditeurRepository.java +++ b/src/main/java/fr/clelia/avis/repository/EditeurRepository.java @@ -19,4 +19,12 @@ public interface EditeurRepository extends JpaRepository { List findByLogoStartsWith(@Param("logo") String logo); Editeur findByNom(String nom); + + @Query(""" + SELECT e + FROM Editeur e + LEFT JOIN e.jeux j + WHERE j IS NULL + """) + List findEditeurWithoutJeux(); } \ No newline at end of file diff --git a/src/main/java/fr/clelia/avis/repository/JeuRepository.java b/src/main/java/fr/clelia/avis/repository/JeuRepository.java index f7d7114..e8b5315 100644 --- a/src/main/java/fr/clelia/avis/repository/JeuRepository.java +++ b/src/main/java/fr/clelia/avis/repository/JeuRepository.java @@ -2,7 +2,17 @@ package fr.clelia.avis.repository; import fr.clelia.avis.business.Jeu; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; public interface JeuRepository extends JpaRepository { + @Query( + """ + SELECT j + FROM Jeu j + WHERE :plateforme member Of j.plateformes + """ + ) + List findJeuxByPlateforme(String plateforme); } \ No newline at end of file diff --git a/src/main/java/fr/clelia/avis/repository/JoueurRepository.java b/src/main/java/fr/clelia/avis/repository/JoueurRepository.java index 3393130..6f9fba2 100644 --- a/src/main/java/fr/clelia/avis/repository/JoueurRepository.java +++ b/src/main/java/fr/clelia/avis/repository/JoueurRepository.java @@ -2,6 +2,10 @@ package fr.clelia.avis.repository; import fr.clelia.avis.business.Joueur; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; public interface JoueurRepository extends JpaRepository { -} \ No newline at end of file +} diff --git a/src/main/java/fr/clelia/avis/repository/UtilisateurRepository.java b/src/main/java/fr/clelia/avis/repository/UtilisateurRepository.java index eb01b00..d55dfbf 100644 --- a/src/main/java/fr/clelia/avis/repository/UtilisateurRepository.java +++ b/src/main/java/fr/clelia/avis/repository/UtilisateurRepository.java @@ -1,7 +1,14 @@ package fr.clelia.avis.repository; import fr.clelia.avis.business.Utilisateur; +import jakarta.transaction.Transactional; import org.springframework.data.jpa.repository.JpaRepository; public interface UtilisateurRepository extends JpaRepository { + + long countByEmailEndsWith(String email); + + @Transactional + long deleteByMotDePasse(String motDePasse); + } \ No newline at end of file