Travail groupe API journée 1

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

@ -37,6 +37,14 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
</dependencies>
<build>

@ -9,5 +9,4 @@ public class SaeApplication {
public static void main(String[] args) {
SpringApplication.run(SaeApplication.class, args);
}
}

@ -0,0 +1,62 @@
package fr.iut.sciencequest.sae.controllers;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import fr.iut.sciencequest.sae.entities.Question;
import fr.iut.sciencequest.sae.exceptions.IncorrectPageException;
import fr.iut.sciencequest.sae.repositories.QuestionRepository;
import jakarta.servlet.http.HttpServletRequest;
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.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Optional;
import java.util.List;
@Controller
@RequestMapping("/api/v1/questions")
public class QuestionController {
private static final int PAGE_SIZE = 10;
private final QuestionRepository questionRepository;
public QuestionController(QuestionRepository questionRepository) {
this.questionRepository = questionRepository;
}
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CollectionModel<EntityModel<Question>> getAllQuestions(@RequestParam(name = "page") Optional<Integer> page, HttpServletRequest request) {
try {
Pageable paging = PageRequest.of(page.orElse(0), PAGE_SIZE);
Page<Question> pagedResult = questionRepository.findAll(paging);
List<EntityModel<Question>> questions = pagedResult.map(EntityModel::of).toList();
Link selfLink = linkTo(methodOn(QuestionController.class).getAllQuestions(page, request)).withSelfRel().expand(page.map(Object::toString).orElse("0"));
CollectionModel<EntityModel<Question>> result = CollectionModel.of(questions, selfLink);
if (pagedResult.hasPrevious()) {
Link prevLink = linkTo(methodOn(QuestionController.class).getAllQuestions(Optional.of(pagedResult.previousPageable().getPageNumber()), request)).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");
result.add(nextLink.expand(pagedResult.nextPageable().getPageNumber()));
}
return result;
} catch (IllegalArgumentException e) {
throw new IncorrectPageException(request.getRequestURI(), "numéro de page incorrect");
}
}
}

@ -0,0 +1,72 @@
package fr.iut.sciencequest.sae.controllers;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import fr.iut.sciencequest.sae.entities.Scientifique;
import fr.iut.sciencequest.sae.exceptions.IncorrectPageException;
import fr.iut.sciencequest.sae.exceptions.ScientifiqueNotFoundException;
import fr.iut.sciencequest.sae.repositories.ScientifiqueRepository;
import jakarta.servlet.http.HttpServletRequest;
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.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@Controller()
@RequestMapping("/api/v1/scientifiques")
public class ScientifiqueController {
private static final int PAGE_SIZE = 10;
private final ScientifiqueRepository scientifiqueRepository;
public ScientifiqueController(ScientifiqueRepository scientifiqueRepository) {
this.scientifiqueRepository = scientifiqueRepository;
}
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CollectionModel<EntityModel<Scientifique>> getAllScientists(@RequestParam(name = "page") Optional<Integer> page, HttpServletRequest request) {
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"));
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");
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");
result.add(nextLink.expand(pagedResult.nextPageable().getPageNumber()));
}
return result;
} catch (IllegalArgumentException e) {
throw new IncorrectPageException(request.getRequestURI(), "numéro de page incorrect");
}
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public EntityModel<Optional<Scientifique>> getScientistById(@PathVariable int id, HttpServletRequest request) {
Optional<Scientifique> scientifiqueOptional = this.scientifiqueRepository.findById(id);
Scientifique scientifique = scientifiqueOptional.orElseThrow(() -> new ScientifiqueNotFoundException(request.getRequestURI(), "Scientifique non trouvé avec l'ID : " + id));
Link selfLink = linkTo(methodOn(ScientifiqueController.class).getScientistById(id, request)).withSelfRel();
return EntityModel.of(Optional.ofNullable(scientifique), selfLink);
}
}

@ -0,0 +1,28 @@
package fr.iut.sciencequest.sae.controllers;
import fr.iut.sciencequest.sae.entities.Thematique;
import fr.iut.sciencequest.sae.repositories.ThematiqueRepository;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@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
public Iterable<Thematique> getAllThematiques() {
return this.thematiqueRepository.findAll();
}
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Thematique postThematique(@)
}

@ -0,0 +1,19 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Table(name="admin")
public class Admin {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String email, password;
}

@ -0,0 +1,19 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Table(name="difficulte")
public class Difficulte {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String libelle;
}

@ -0,0 +1,19 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Table(name="indice")
public class Indice {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String libelle;
//private Scientifique scientifique;
}

@ -0,0 +1,15 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@Data
@Entity
@Table(name = "invite")
public class Invite extends Joueur{
}

@ -0,0 +1,20 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Table(name="jeu")
public class Jeu {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String nom;
@Column(name = "nbrparties")
private int nbrParties;
}

@ -0,0 +1,20 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Inheritance ( strategy = InheritanceType.JOINED)
@Entity
@Table(name="joueur")
public abstract class Joueur {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String pseudo;
//private Partie partie;
}

@ -0,0 +1,33 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.util.Set;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name="partie")
public class Partie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "codeinvitation")
private String codeInvitation;
/*private Jeu jeu;
@Getter() private Set<Joueur> joueurs;
public boolean add(Joueur joueur){
return this.joueurs.add(joueur);
}
public boolean remove(Joueur joueur){
return this.joueurs.remove(joueur);
}
*/
}

@ -0,0 +1,24 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name="question")
public class Question {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String question;
@OneToMany(mappedBy = "id")
private List<Reponse> reponses;
}

@ -0,0 +1,19 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name="reponse")
public class Reponse {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String reponse;
}

@ -0,0 +1,41 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.hibernate.annotations.Type;
import java.util.Date;
@AllArgsConstructor
@RequiredArgsConstructor
@Data
@Entity
@Table(name = "scientifique")
public class Scientifique {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name="iddifficulte")
private Difficulte difficulte;
@ManyToOne
@JoinColumn(name="idthematique")
private Thematique thematique;
@Column(name = "photo")
private String pathToPhoto;
private String nom, prenom, descriptif;
@Column(name = "datenaissance")
private Date dateNaissance;
private char sexe;
@Column(name = "ratiotrouvee")
private double ratioTrouve;
}

@ -0,0 +1,18 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Table(name="thematique")
public class Thematique {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String libelle;
}

@ -0,0 +1,22 @@
package fr.iut.sciencequest.sae.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Table(name="utilisateur")
public class Utilisateur extends Joueur{
private String email;
@Column(name = "motdepasse")
private String motDePasse;
private String pseudo;
}

@ -0,0 +1,9 @@
package fr.iut.sciencequest.sae.exceptions;
public class IncorrectPageException extends RuntimeException {
public final String uri;
public IncorrectPageException(String uri, String exception) {
super(exception);
this.uri = uri;
}
}

@ -0,0 +1,10 @@
package fr.iut.sciencequest.sae.exceptions;
public class ScientifiqueNotFoundException extends RuntimeException {
public final String uri;
public ScientifiqueNotFoundException(String uri, String exception) {
super(exception);
this.uri = uri;
}
}

@ -0,0 +1,27 @@
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;
}
}

@ -0,0 +1,27 @@
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;
}
}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Admin;
import org.springframework.data.repository.CrudRepository;
public interface AdminRepository extends CrudRepository<Admin, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Difficulte;
import org.springframework.data.repository.CrudRepository;
public interface DifficulteRepository extends CrudRepository<Difficulte, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Indice;
import org.springframework.data.repository.CrudRepository;
public interface IndiceRepository extends CrudRepository<Indice, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Invite;
import org.springframework.data.repository.CrudRepository;
public interface InviteRepository extends CrudRepository<Invite, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Jeu;
import org.springframework.data.repository.CrudRepository;
public interface JeuRepository extends CrudRepository<Jeu, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Joueur;
import org.springframework.data.repository.CrudRepository;
public interface JoueurRepository extends CrudRepository<Joueur, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Partie;
import org.springframework.data.repository.CrudRepository;
public interface PartieRepository extends CrudRepository<Partie, Integer> {}

@ -0,0 +1,9 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Question;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface QuestionRepository extends PagingAndSortingRepository<Question, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Reponse;
import org.springframework.data.repository.CrudRepository;
public interface ReponseRepository extends CrudRepository<Reponse, Integer> {}

@ -0,0 +1,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;
public interface ScientifiqueRepository extends PagingAndSortingRepository<Scientifique, Integer>, CrudRepository<Scientifique, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Thematique;
import org.springframework.data.repository.CrudRepository;
public interface ThematiqueRepository extends CrudRepository<Thematique, Integer> {}

@ -0,0 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Utilisateur;
import org.springframework.data.repository.CrudRepository;
public interface UtilisateurRepository extends CrudRepository<Utilisateur, Integer> {}

@ -1 +1,7 @@
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=iut
spring.datasource.password=password974519874185$976
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

@ -0,0 +1,171 @@
-- Testé sous pgsql 15
DROP TABLE IF EXISTS Reponse CASCADE;
DROP TABLE IF EXISTS Question CASCADE;
DROP TABLE IF EXISTS Admin CASCADE;
DROP TABLE IF EXISTS Partie CASCADE;
DROP TABLE IF EXISTS Jeu CASCADE;
DROP TABLE IF EXISTS Decouvrir CASCADE;
DROP TABLE IF EXISTS Utilisateur CASCADE;
DROP TABLE IF EXISTS Invite CASCADE;
DROP TABLE IF EXISTS Joueur CASCADE;
DROP TABLE IF EXISTS Indice CASCADE;
DROP TABLE IF EXISTS Scientifique CASCADE;
DROP TABLE IF EXISTS Thematique CASCADE;
DROP TABLE IF EXISTS Difficulte;
-- THEMATIQUE
CREATE TABLE Thematique(
id SERIAL PRIMARY KEY,
libelle varchar(128) NOT NULL UNIQUE
);
-- DIFFICULTE
CREATE TABLE Difficulte(
id SERIAL PRIMARY KEY,
libelle varchar(128) NOT NULL UNIQUE
);
-- SCIENTIFIQUE
CREATE TABLE Scientifique(
id SERIAL PRIMARY KEY,
nom varchar(128) NOT NULL,
prenom varchar(128) NOT NULL,
photo varchar(512) NOT NULL,
dateNaissance date NOT NULL,
descriptif text NOT NULL,
ratioTrouvee numeric(5,4),
sexe char(1) NOT NULL CHECK(sexe IN ('F', 'H')),
idThematique integer REFERENCES Thematique(id),
idDifficulte integer REFERENCES Difficulte(id)
);
-- INDICE
CREATE TABLE Indice(
id SERIAL PRIMARY KEY,
libelle varchar(512) NOT NULL UNIQUE,
idScientifique integer REFERENCES Scientifique(id)
);
-- QUESTION
CREATE TABLE Question(
id SERIAL PRIMARY KEY,
question varchar(256) NOT NULL UNIQUE
);
-- REPONSE
CREATE TABLE Reponse(
id SERIAL PRIMARY KEY,
reponse varchar(255) NOT NULL,
idQuestion integer REFERENCES Question(id),
idScientifique integer REFERENCES Scientifique(id)
);
-- ADMIN
CREATE TABLE Admin(
id SERIAL PRIMARY KEY,
email varchar(255) NOT NULL UNIQUE,
password varchar(255) NOT NULL
);
-- Jeu
CREATE TABLE Jeu(
id SERIAL PRIMARY KEY,
nom varchar(128) NOT NULL UNIQUE,
nbrParties integer NOT NULL DEFAULT 0
);
-- Partie
CREATE TABLE Partie(
id SERIAL PRIMARY KEY,
codeInvitation varchar(10) NOT NULL UNIQUE,
idJeu integer REFERENCES Jeu(id)
);
-- JOUEUR
CREATE TABLE Joueur(
id SERIAL PRIMARY KEY,
idPartie integer REFERENCES Partie(id),
pseudo varchar(255) NOT NULL UNIQUE
);
-- Invite
CREATE TABLE Invite(
idJoueur integer PRIMARY KEY REFERENCES Joueur(id)
);
-- Utilisateur
CREATE TABLE Utilisateur(
idJoueur integer PRIMARY KEY REFERENCES Joueur(id),
email varchar(255) NOT NULL UNIQUE,
password varchar(255) NOT NULL
);
-- Decouvrir
CREATE TABLE Decouvrir(
idUtilisateur integer REFERENCES Utilisateur(idJoueur),
idScientifique integer REFERENCES Scientifique(id),
PRIMARY KEY (idUtilisateur, idScientifique)
);
-- INSERTS
-- Scientifiques
INSERT INTO Difficulte(libelle) VALUES ('Facile'),('Intermédiaire'),('Difficile');
INSERT INTO Thematique(libelle) VALUES ('Nucléaire'),('Mathématiques');
INSERT INTO Scientifique(nom, prenom, photo, dateNaissance, descriptif, ratioTrouvee, idThematique, idDifficulte, sexe)
VALUES
('Marie', 'Curie', '', CURRENT_DATE, 'desc', 0, 1, 1, 'F'),
('Albert', 'Einstein', '', CURRENT_DATE, 'desc', 0, 2, 1, 'H'),
('Sophie', 'Germain', '', CURRENT_DATE, 'desc', 0, 2, 2, 'F');
-- Jeu
INSERT INTO Jeu(nom) VALUES ('Qui-est-ce ?'),('Science Quizz'), ('Pendu');
-- Questions
INSERT INTO Question(question)
VALUES
('Qui a reçu le prix Nobel de chimie en 1911, pour avoir réussi à isoler un gramme de radium ?'),
('Quel mathématicien a dit : « Dieu existe, cest les mathématiques » ?'),
('Quel mathématicienne utilisa comme nom d"emprunt « Antoine Auguste Le Blanc » ?');
-- Réponses
INSERT INTO Reponse(reponse, idQuestion, idScientifique)
VALUES
('Marie Curie', 1, 1),
('Albert Einstein', 2, 2),
('Sophie Germain', 3, 3);
-- Utilisateurs
INSERT INTO Joueur(id,pseudo) VALUES (1337, 'moi, le meilleur joueur du monde');
INSERT INTO Utilisateur(idJoueur,email,password) VALUES (1337, 'joueur','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS');
-- mdp = test
INSERT INTO decouvrir(idUtilisateur,idScientifique) VALUES (1337,1);
INSERT INTO Admin(id,email,password) VALUES (1, 'admin','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS');
-- mdp = test
Loading…
Cancel
Save