-- ALTER USER 'root'@'localhost' IDENTIFIED BY 'p';

-- CREATE DATABASE scripted;
-- USE scripted;

-- DROP TABLE Contenir;
-- DROP TABLE Participer;
-- DROP TABLE Resoudre;
-- DROP TABLE Enigme;
-- DROP TABLE Partie;
-- DROP TABLE Utilisateur;

CREATE TABLE  Utilisateur(
email varchar(50) PRIMARY KEY,
pseudo varchar(50),
mdp varchar(50),
estAdmin boolean
);

CREATE TABLE  Enigme(
id integer PRIMARY KEY AUTOINCREMENT,
enonce varchar(250) NOT NULL,
aide varchar(250),
rappel varchar(250),
solution varchar(250) NOT NULL,
test varchar(250) NOT NULL,
tempsDeResolution numeric CHECK (tempsDeResolution >0),
points numeric CHECK (points >0)
);

CREATE TABLE  Partie(
id integer PRIMARY KEY AUTOINCREMENT,
dateDebut date NOT NULL
);

CREATE TABLE  Resoudre(
joueur varchar(50) REFERENCES Utilisateur(email),
enigme int REFERENCES Enigme(id),
partie int REFERENCES Partie(id),
classement int CHECK (classement >0),
indexEnigme int CHECK (indexEnigme >0),
temps numeric CHECK (temps >0),
enMulti boolean,
PRIMARY KEY(joueur, enigme, partie)
);

CREATE TABLE  Contenir(
partie int REFERENCES Partie(id),
enigme int REFERENCES Enigme(id),
indexEnigme numeric UNIQUE,
PRIMARY KEY(partie, enigme)
);

CREATE TABLE  Participer(
    partie int REFERENCES Partie(id),
    joueur varchar(50) REFERENCES Joueur(email),
    etat int CHECK (etat IN (0,1,2)), -- etat 0 = enAttente etat 1 = enCours etat 2 = fini
    PRIMARY KEY(partie, joueur)
);