SET FOREIGN_KEY_CHECKS = 0;

DROP TABLE IF EXISTS fluege;
DROP TABLE IF EXISTS piloten;
DROP TABLE IF EXISTS flugzeuge;
DROP TABLE IF EXISTS mitarbeiter;
DROP TABLE IF EXISTS users;

SET FOREIGN_KEY_CHECKS = 1;

CREATE TABLE users (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    Vorname VARCHAR(100) NOT NULL,
    Nachname VARCHAR(100) NOT NULL,
    Email VARCHAR(100) NOT NULL,
    PasswortHash VARCHAR(255) NOT NULL,
    Rolle VARCHAR(50) NOT NULL,
    Stadt VARCHAR(100),
    Anrede VARCHAR(20),
    Geburtsdatum DATE,
    CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE flugzeuge (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    Modell VARCHAR(100) NOT NULL,
    Plaetze INT NOT NULL,
    Lagerflaeche FLOAT NOT NULL,
    Gewicht FLOAT NOT NULL,
    Kerosinverbrauch FLOAT NOT NULL,
    Stundengeschwindigkeit FLOAT NOT NULL,
    Stundenstand FLOAT NOT NULL,
    Herstellungsdatum DATE NOT NULL,
    IstDefekt BOOLEAN NOT NULL
);

CREATE TABLE piloten (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    Vorname VARCHAR(100) NOT NULL,
    Nachname VARCHAR(100) NOT NULL,
    Flugerfahrung FLOAT NOT NULL,  
    Groesse FLOAT NOT NULL,     
    Bewertung FLOAT NOT NULL,  
    Pilotalter DATE NOT NULL,
    Gender VARCHAR(10),
    IstVerfuegbar BOOLEAN NOT NULL,
    Sprachen TEXT                      
);

CREATE TABLE fluege (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    Abflugort VARCHAR(100) NOT NULL,
    Zielort VARCHAR(100) NOT NULL,
    Abflugdatum DATETIME NOT NULL,
    Ankunftsdatum DATETIME NOT NULL,
    Flugnummer VARCHAR(20) NOT NULL,
    Preis DECIMAL(10,2) NOT NULL,
    Created DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FlugzeugId INT NOT NULL,
    PilotId INT NOT NULL,
    ErstelltVon INT NOT NULL,
    FOREIGN KEY (FlugzeugId) REFERENCES flugzeuge(Id),
    FOREIGN KEY (PilotId) REFERENCES piloten(Id),
    FOREIGN KEY (ErstelltVon) REFERENCES users(Id)
);

CREATE TABLE mitarbeiter (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    Vorname VARCHAR(100) NOT NULL,
    Nachname VARCHAR(100) NOT NULL,
    Position VARCHAR(100) NOT NULL,
    MitarbeiterAlter INT NOT NULL,
    ArbeitsstundenProWoche FLOAT NOT NULL,
    IstVerfuegbar BOOLEAN NOT NULL
);
