SET
SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET
time_zone = "+00:00";

CREATE TABLE `folla`
( /*Menge*/
    `id`                int auto_increment NOT NULL PRIMARY KEY,
    `unita`             varchar(200) UNIQUE NOT NULL, /*Einheit*/
    `created`           timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `ingredienti`
( /*Zutaten*/
    `id`                int auto_increment NOT NULL PRIMARY KEY,
    `cognome`           varchar(200)  NOT NULL, /*Name*/
    `calorie`           integer(5) NOT NULL, /*Kalorien*/
    `quantita`          integer(5) NOT NULL, /*Anzahl*/
    `prezzo`            decimal(4, 2) NOT NULL, /*Preis*/
    `follaID`           int NOT NULL, /*MengeID*/
    `created`           timestamp     NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `elenco`
( /*Liste*/
    `id`                int auto_increment NOT NULL PRIMARY KEY,
    `utenteID`          int NOT NULL, /*ErstellerID*/
    `cognome`           varchar(200) NOT NULL, /*Name*/
    `coloreDiSfondo`    varchar(200), /*Hintergrundfarbe*/
    `created`           timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `utente`
( /*Benutzer*/
    `id`                int auto_increment NOT NULL PRIMARY KEY,
    `email`             varchar(200)       NOT NULL, /*Email*/
    `parolaDordine`     varchar(255)       NOT NULL, /*Passwort*/
    `nomeUtente`        varchar(50) UNIQUE NOT NULL, /*Benutzernamen*/
    `gettone`           varchar(255), /*Token für Session*/
    `created`           timestamp          NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `elencoIngredienti`
( /*Liste_Zutaten*/
    `id`                int auto_increment NOT NULL PRIMARY KEY,
    `ingredientiID`     int NOT NULL, /*ZutatenID*/
    `elencoID`          int NOT NULL, /*ListeID*/
    `created`           timestamp   NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `utenteElenco`
( /*Benutzer_Liste*/
    `id`                int auto_increment NOT NULL PRIMARY KEY,
    `elencoID`          int NOT NULL, /*ListeID*/
    `utenteID`          int NOT NULL, /*BenutzerID*/
    `created`           timestamp   NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `elencoIngredienti` /*Liste_Zutaten*/
    ADD CONSTRAINT `FK_ElencoIngredienti_Ingredienti` FOREIGN KEY (`ingredientiID`) REFERENCES `ingredienti`(`id`), /*Liste_Zutaten hat Foreignkey von Zutaten(id)*/
    ADD CONSTRAINT `FK_ElencoIngredienti_Elenco` FOREIGN KEY (`elencoID`) REFERENCES `elenco`(`id`); /*Liste_Zutaten hat Foreignkey von Liste(id)*/

ALTER TABLE `utenteElenco` /*Benutzer_Liste*/
    ADD CONSTRAINT `FK_UtenteElenco_Utente` FOREIGN KEY (`utenteId`) REFERENCES `utente`(`id`), /*Benutzer_Liste hat Foreignkey von Benutzer(id)*/
    ADD CONSTRAINT `FK_UtenteElenco_Elenco` FOREIGN KEY (`elencoId`) REFERENCES `elenco`(`id`); /*Benutzer_Liste hat Foreignkey von Liste(id)*/

ALTER TABLE `ingredienti`
    ADD CONSTRAINT `FK_Ingredienti_Folla` FOREIGN KEY (`follaID`) REFERENCES `folla`(`id`); /*Zutaten hat Foreignkey von Menge(id)*/

ALTER TABLE `elenco`
    ADD CONSTRAINT `FK_Elenco_Utente` FOREIGN KEY (`utenteId`) REFERENCES `utente`(`id`); /*Liste hat Foreignkey von Benutzer(id)*/






/*Test Data*/
INSERT INTO `utente` (email, parolaDordine, nomeUtente) VALUES ('test@test.com', 'password', "testuser");
INSERT INTO `utente` (email, parolaDordine, nomeUtente) VALUES ('test1@test.com', 'password1', "testuser1");


INSERT INTO `folla` (unita) VALUES ('st');
INSERT INTO `folla` (unita) VALUES ('g');
INSERT INTO `folla` (unita) VALUES ('kg');
INSERT INTO `folla` (unita) VALUES ('mg');
INSERT INTO `folla` (unita) VALUES ('l');
INSERT INTO `folla` (unita) VALUES ('ml');
INSERT INTO `folla` (unita) VALUES ('TL');
INSERT INTO `folla` (unita) VALUES ('EL');

INSERT INTO `ingredienti` (cognome, calorie, quantita, prezzo, follaID) VALUES ('Raffinierter Zucker', 3870, 1000, 5, 2);
INSERT INTO `ingredienti` (cognome, calorie, quantita, prezzo, follaID) VALUES ('Die Chips von der Tanke', 843, 375, 4.30, 2);

INSERT INTO `elenco` (utenteID, cognome) VALUES (1, 'Liste den Einkauf bei Netto');

INSERT INTO `elencoIngredienti` (ingredientiID, elencoID) VALUES (1, 1);
INSERT INTO `elencoIngredienti` (ingredientiID, elencoID) VALUES (2, 1);
