Modifications jour 2 - encore en cours-

Springboot
Alix JEUDI--LEMOINE 1 year ago
parent 5ee71a4538
commit f8ee356681

@ -41,6 +41,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>

@ -0,0 +1,18 @@
package fr.iut.sciencequest.sae;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.accept.FixedContentNegotiationStrategy;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;
@Configuration
public class ApplicationConfig implements WebMvcConfigurer {
// Permet de forcer l'affichage des erreurs en JSON sans prendre en compte les headers du client
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.strategies(List.of(new FixedContentNegotiationStrategy(MediaType.APPLICATION_JSON)));
}
}

@ -0,0 +1,52 @@
package fr.iut.sciencequest.sae.controllers;
import fr.iut.sciencequest.sae.entities.Partie;
import fr.iut.sciencequest.sae.exceptions.DuplicatedEntity;
import fr.iut.sciencequest.sae.exceptions.PartieNotFoundException;
import fr.iut.sciencequest.sae.repositories.PartieRepository;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import javax.print.attribute.standard.Media;
import java.util.Optional;
@RestController
@RequestMapping("/api/v1/partie")
public class PartieController {
private static final int PAGE_SIZE = 5;
private final PartieRepository partieRepository;
public PartieController(PartieRepository partieRepository) {
this.partieRepository = partieRepository;
}
@RequestMapping(value = "/{id}",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public EntityModel<Optional<Partie>> getPartie(@PathVariable int id, HttpServletRequest request) {
Optional<Partie> partieOptional = this.partieRepository.findById(id);
Partie partie = partieOptional.orElseThrow(() ->
new PartieNotFoundException("Partie introuvable avec l'ID : " + id)
);
Link selfLink = linkTo(methodOn(PartieController.class).getPartie(id,request)).withSelfRel();
return EntityModel.of(Optional.ofNullable(partie), selfLink);
}
@RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public Partie createPartie(@RequestBody Partie partie) {
try {
return this.partieRepository.save(partie);
} catch (DataIntegrityViolationException e) {
throw new DuplicatedEntity("ERREUR : il existe déjà une partie : " + partie.getId() + " en base");
}
}
}

@ -55,7 +55,7 @@ public class QuestionController {
return result;
} catch (IllegalArgumentException e) {
throw new IncorrectPageException(request.getRequestURI(), "numéro de page incorrect");
throw new IncorrectPageException("numéro de page incorrect");
}
}
}

@ -2,71 +2,117 @@ package fr.iut.sciencequest.sae.controllers;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import fr.iut.sciencequest.sae.entities.Indice;
import fr.iut.sciencequest.sae.entities.Scientifique;
import fr.iut.sciencequest.sae.exceptions.DuplicatedEntity;
import fr.iut.sciencequest.sae.exceptions.IncorrectPageException;
import fr.iut.sciencequest.sae.exceptions.ScientifiqueNotFoundException;
import fr.iut.sciencequest.sae.repositories.IndiceRepository;
import fr.iut.sciencequest.sae.repositories.ScientifiqueRepository;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@Controller()
@RestController
@RequestMapping("/api/v1/scientifiques")
public class ScientifiqueController {
private static final int PAGE_SIZE = 10;
private static final int PAGE_SIZE = 1;
private final ScientifiqueRepository scientifiqueRepository;
private final IndiceRepository indiceRepository;
public ScientifiqueController(ScientifiqueRepository scientifiqueRepository) {
public ScientifiqueController(ScientifiqueRepository scientifiqueRepository, IndiceRepository indiceRepository) {
this.scientifiqueRepository = scientifiqueRepository;
this.indiceRepository = indiceRepository;
}
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CollectionModel<EntityModel<Scientifique>> getAllScientists(@RequestParam(name = "page") Optional<Integer> page, HttpServletRequest request) {
public CollectionModel<EntityModel<Scientifique>> getAllScientists(@RequestParam(name = "page") Optional<Integer> page) {
try {
Pageable paging = PageRequest.of(page.orElse(0), PAGE_SIZE);
Page<Scientifique> pagedResult = scientifiqueRepository.findAll(paging);
List<EntityModel<Scientifique>> scientifiques = pagedResult.map(EntityModel::of).toList();
Link selfLink = linkTo(methodOn(ScientifiqueController.class).getAllScientists(page, request)).withSelfRel().expand(page.map(Object::toString).orElse("0"));
Link selfLink = linkTo(methodOn(ScientifiqueController.class).getAllScientists(page)).withSelfRel().expand(page.map(Object::toString).orElse("0"));
CollectionModel<EntityModel<Scientifique>> result = CollectionModel.of(scientifiques, selfLink);
if (pagedResult.hasPrevious()) {
Link prevLink = linkTo(methodOn(QuestionController.class).getAllQuestions(Optional.of(pagedResult.previousPageable().getPageNumber()), request)).withRel("previous");
Link prevLink = linkTo(methodOn(ScientifiqueController.class).getAllScientists(Optional.of(pagedResult.previousPageable().getPageNumber()))).withRel("previous");
result.add(prevLink.expand(pagedResult.previousPageable().getPageNumber()));
}
if (pagedResult.hasNext()) {
Link nextLink = linkTo(methodOn(QuestionController.class).getAllQuestions(Optional.of(pagedResult.nextPageable().getPageNumber()), request)).withRel("next");
Link nextLink = linkTo(methodOn(ScientifiqueController.class).getAllScientists(Optional.of(pagedResult.nextPageable().getPageNumber()))).withRel("next");
result.add(nextLink.expand(pagedResult.nextPageable().getPageNumber()));
}
return result;
} catch (IllegalArgumentException e) {
throw new IncorrectPageException(request.getRequestURI(), "numéro de page incorrect");
throw new IncorrectPageException("numéro de page incorrect");
}
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public EntityModel<Optional<Scientifique>> getScientistById(@PathVariable int id, HttpServletRequest request) {
public EntityModel<Optional<Scientifique>> getScientistById(@PathVariable int id) {
Optional<Scientifique> scientifiqueOptional = this.scientifiqueRepository.findById(id);
Scientifique scientifique = scientifiqueOptional.orElseThrow(() -> new ScientifiqueNotFoundException(request.getRequestURI(), "Scientifique non trouvé avec l'ID : " + id));
Scientifique scientifique = scientifiqueOptional.orElseThrow(() -> new ScientifiqueNotFoundException("Scientifique non trouvé avec l'ID : " + id));
Link selfLink = linkTo(methodOn(ScientifiqueController.class).getScientistById(id, request)).withSelfRel();
Link selfLink = linkTo(methodOn(ScientifiqueController.class).getScientistById(id)).withSelfRel();
return EntityModel.of(Optional.ofNullable(scientifique), selfLink);
}
@GetMapping(value="/{id}/indices", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CollectionModel<EntityModel<Indice>> getScientistHints(@PathVariable int id, @RequestParam(name = "page") Optional<Integer> page) {
try {
Pageable paging = PageRequest.of(page.orElse(0), PAGE_SIZE);
Page<Indice> pagedResult = indiceRepository.findAll(paging);
List<EntityModel<Indice>> indices = pagedResult.map(EntityModel::of).toList();
Link selfLink = linkTo(methodOn(ScientifiqueController.class).getScientistHints(id, page)).withSelfRel().expand(page.map(Object::toString).orElse("0"));
CollectionModel<EntityModel<Indice>> result = CollectionModel.of(indices, selfLink);
if (pagedResult.hasPrevious()) {
Link prevLink = linkTo(methodOn(ScientifiqueController.class).getScientistHints(id, Optional.of(pagedResult.previousPageable().getPageNumber()))).withRel("previous");
result.add(prevLink.expand(pagedResult.previousPageable().getPageNumber()));
}
if (pagedResult.hasNext()) {
Link nextLink = linkTo(methodOn(ScientifiqueController.class).getScientistHints(id, Optional.of(pagedResult.nextPageable().getPageNumber()))).withRel("next");
result.add(nextLink.expand(pagedResult.nextPageable().getPageNumber()));
}
return result;
} catch (IllegalArgumentException e) {
throw new IncorrectPageException("numéro de page incorrect");
}
}
@PostMapping(value="/{id}/indices", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public Indice postIndice(@RequestBody Indice indice){
try{
return this.indiceRepository.save(indice);
} catch (DataIntegrityViolationException e){
throw new DuplicatedEntity(e.getMessage());
}
}
}

@ -1,28 +1,40 @@
package fr.iut.sciencequest.sae.controllers;
import fr.iut.sciencequest.sae.entities.Thematique;
import fr.iut.sciencequest.sae.exceptions.DuplicatedEntity;
import fr.iut.sciencequest.sae.repositories.ThematiqueRepository;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RestController
@RequestMapping("/api/v1/thematiques")
public class ThematiqueController {
private final ThematiqueRepository thematiqueRepository;
public ThematiqueController(ThematiqueRepository thematiqueRepository) {
this.thematiqueRepository = thematiqueRepository;
}
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public Iterable<Thematique> getAllThematiques() {
return this.thematiqueRepository.findAll();
}
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Thematique postThematique(@)
@ResponseStatus(HttpStatus.CREATED)
public Thematique postThematique(@RequestBody Thematique thematique, HttpServletRequest request){
if(this.thematiqueRepository.existsById(thematique.getId()))
throw new DuplicatedEntity("Une thématique avec l'ID "+thematique.getId()+" existe déjà");
try{
thematique = this.thematiqueRepository.save(thematique);
return thematique;
} catch (DataIntegrityViolationException e) {
throw new DuplicatedEntity("Une thématique avec le libelle : " + thematique.getLibelle() + " existe déjà");
}
}
}

@ -1,6 +1,9 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -12,8 +15,18 @@ import lombok.NoArgsConstructor;
@Table(name="admin")
public class Admin {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String email, password;
@Email(message="Veuillez fournir une adresse mail valide")
@NotNull
@NotBlank
@Column(unique = true)
private String email;
@NotNull
@NotBlank
@Column()
private String password;
}

@ -1,6 +1,8 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -13,7 +15,11 @@ import lombok.NoArgsConstructor;
@Table(name="difficulte")
public class Difficulte {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank
@Column(unique = true)
private String libelle;
}

@ -1,6 +1,8 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -12,8 +14,13 @@ import lombok.NoArgsConstructor;
@Table(name="indice")
public class Indice {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank
private String libelle;
//private Scientifique scientifique;
@NotNull
private int idScientifique;
}

@ -1,9 +1,13 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.bind.DefaultValue;
@NoArgsConstructor
@AllArgsConstructor
@ -12,9 +16,15 @@ import lombok.NoArgsConstructor;
@Table(name="jeu")
public class Jeu {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank
@Column(unique = true)
private String nom;
@Column(name = "nbrparties")
private int nbrParties;
@Min(0)
private int nbrParties = 0;
}

@ -1,6 +1,8 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -13,8 +15,12 @@ import lombok.NoArgsConstructor;
@Table(name="joueur")
public abstract class Joueur {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank
@Column(unique = true)
private String pseudo;
//private Partie partie;
}

@ -1,6 +1,7 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
@ -15,9 +16,11 @@ import java.util.Set;
@Table(name="partie")
public class Partie {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "codeinvitation")
@Column(name = "codeinvitation", unique = true)
private String codeInvitation;
/*private Jeu jeu;
@Getter() private Set<Joueur> joueurs;

@ -1,5 +1,7 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -14,10 +16,12 @@ import java.util.List;
@Table(name="question")
public class Question {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String question;
@NotEmpty
@OneToMany(mappedBy = "id")
private List<Reponse> reponses;
}

@ -1,6 +1,7 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -12,8 +13,11 @@ import lombok.NoArgsConstructor;
@Table(name="reponse")
public class Reponse {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotNull
private String reponse;
}

@ -1,6 +1,9 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.RequiredArgsConstructor;
@ -15,13 +18,16 @@ import java.util.Date;
@Table(name = "scientifique")
public class Scientifique {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotNull
@ManyToOne
@JoinColumn(name="iddifficulte")
private Difficulte difficulte;
@NotNull
@ManyToOne
@JoinColumn(name="idthematique")
private Thematique thematique;
@ -29,13 +35,24 @@ public class Scientifique {
@Column(name = "photo")
private String pathToPhoto;
private String nom, prenom, descriptif;
@NotBlank
private String nom;
@NotBlank
private String prenom;
@NotBlank
private String descriptif;
@NotBlank
@Column(name = "datenaissance")
private Date dateNaissance;
private char sexe;
@NotBlank
@Enumerated(EnumType.STRING)
private Sexe sexe;
@Column(name = "ratiotrouvee")
private double ratioTrouve;
@Size(min=0, max=1)
private double ratioTrouve = 0.0;
}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.entities;
public enum Sexe {
F,
H
}

@ -1,6 +1,8 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -12,7 +14,11 @@ import lombok.NoArgsConstructor;
@Table(name="thematique")
public class Thematique {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank
@Column(unique = true)
private String libelle;
}

@ -2,6 +2,9 @@ package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -14,9 +17,13 @@ import lombok.NoArgsConstructor;
@Entity
@Table(name="utilisateur")
public class Utilisateur extends Joueur{
@Email(message="Veuillez fournir une adresse mail valide")
@NotNull
@Column(unique = true)
private String email;
@NotBlank
@Column(name = "motdepasse")
private String motDePasse;
private String pseudo;
}

@ -0,0 +1,12 @@
package fr.iut.sciencequest.sae.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(HttpStatus.CONFLICT)
public class DuplicatedEntity extends RuntimeException {
public DuplicatedEntity(String message){
super(message);
}
}

@ -1,9 +1,12 @@
package fr.iut.sciencequest.sae.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(HttpStatus.NOT_ACCEPTABLE)
public class IncorrectPageException extends RuntimeException {
public final String uri;
public IncorrectPageException(String uri, String exception) {
public IncorrectPageException(String exception) {
super(exception);
this.uri = uri;
}
}

@ -0,0 +1,12 @@
package fr.iut.sciencequest.sae.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(HttpStatus.NOT_FOUND)
public class PartieNotFoundException extends RuntimeException{
public PartieNotFoundException(String message) {
super(message);
}
}

@ -1,10 +1,12 @@
package fr.iut.sciencequest.sae.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(HttpStatus.NOT_FOUND)
public class ScientifiqueNotFoundException extends RuntimeException {
public final String uri;
public ScientifiqueNotFoundException(String uri, String exception) {
super(exception);
this.uri = uri;
public ScientifiqueNotFoundException(String message) {
super(message);
}
}

@ -1,27 +0,0 @@
package fr.iut.sciencequest.sae.exceptions.advices;
import fr.iut.sciencequest.sae.exceptions.IncorrectPageException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;
@ControllerAdvice
public class IncorrectPageAdvice {
@ResponseBody
@ExceptionHandler(IncorrectPageException.class)
@ResponseStatus(HttpStatus.NOT_ACCEPTABLE)
Map<String, Object> exceptionHandler(IncorrectPageException ex) {
Map<String, Object> map = new HashMap<>();
map.put("timestamp", String.valueOf(new Timestamp(System.currentTimeMillis())));
map.put("error", ex.getMessage());
map.put("status", HttpStatus.NOT_ACCEPTABLE.value());
map.put("path", ex.uri);
return map;
}
}

@ -1,27 +0,0 @@
package fr.iut.sciencequest.sae.exceptions.advices;
import fr.iut.sciencequest.sae.exceptions.IncorrectPageException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;
@ControllerAdvice
public class ScientifiqueNotFoundAdvice {
@ResponseBody
@ExceptionHandler(IncorrectPageException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
Map<String, Object> exceptionHandler(IncorrectPageException ex) {
Map<String, Object> map = new HashMap<>();
map.put("timestamp", String.valueOf(new Timestamp(System.currentTimeMillis())));
map.put("error", ex.getMessage());
map.put("status", HttpStatus.NOT_FOUND.value());
map.put("path", ex.uri);
return map;
}
}

@ -2,5 +2,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Admin;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface AdminRepository extends CrudRepository<Admin, Integer> {}

@ -2,5 +2,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Difficulte;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DifficulteRepository extends CrudRepository<Difficulte, Integer> {}

@ -2,5 +2,10 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Indice;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
public interface IndiceRepository extends CrudRepository<Indice, Integer> {}
@Repository
public interface IndiceRepository extends PagingAndSortingRepository<Indice, Integer>, CrudRepository<Indice, Integer> {
}

@ -2,5 +2,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Invite;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface InviteRepository extends CrudRepository<Invite, Integer> {}

@ -2,5 +2,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Jeu;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface JeuRepository extends CrudRepository<Jeu, Integer> {}

@ -2,5 +2,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Joueur;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface JoueurRepository extends CrudRepository<Joueur, Integer> {}

@ -2,5 +2,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Partie;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface PartieRepository extends CrudRepository<Partie, Integer> {}

@ -5,5 +5,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface QuestionRepository extends PagingAndSortingRepository<Question, Integer> {}

@ -2,5 +2,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Reponse;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ReponseRepository extends CrudRepository<Reponse, Integer> {}

@ -3,5 +3,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Scientifique;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ScientifiqueRepository extends PagingAndSortingRepository<Scientifique, Integer>, CrudRepository<Scientifique, Integer> {}

@ -2,5 +2,8 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Thematique;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ThematiqueRepository extends CrudRepository<Thematique, Integer> {}

@ -2,5 +2,7 @@ package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Utilisateur;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UtilisateurRepository extends CrudRepository<Utilisateur, Integer> {}

@ -5,3 +5,4 @@ spring.datasource.driver-class-name=org.postgresql.Driver
spring.sql.init.mode=always
spring.sql.init.schema-locations=classpath:schema.sql
spring.jackson.serialization.indent_output = true
server.error.include-message=always

@ -153,6 +153,11 @@ VALUES
('Quel mathématicien a dit : « Dieu existe, cest les mathématiques » ?'),
('Quel mathématicienne utilisa comme nom d"emprunt « Antoine Auguste Le Blanc » ?');
-- Indices
INSERT INTO Indice (id, libelle, idscientifique) VALUES
(1, 'Indice pour aider', 1),
(2, 'S''appelle Marie', 1);
-- Réponses
INSERT INTO Reponse(reponse, idQuestion, idScientifique)
VALUES

Loading…
Cancel
Save