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

-- --------------------------------------------------------

CREATE TABLE User (
    userid INT AUTO_INCREMENT PRIMARY KEY,
    vorname VARCHAR(50),
    nachname VARCHAR(50),
    strasse VARCHAR(100),
    hausnr VARCHAR(10),
    postleitzahl VARCHAR(10),
    ort VARCHAR(50),
    land VARCHAR(50),
    tel VARCHAR(20),
    email VARCHAR(100) UNIQUE,
    isAdmin BOOLEAN DEFAULT FALSE,
    password VARCHAR(255)
);


CREATE TABLE Standort (
    standortid INT AUTO_INCREMENT PRIMARY KEY,
    strasse VARCHAR(100),
    hausnr VARCHAR(10),
    plz VARCHAR(10),
    ort VARCHAR(50),
    land VARCHAR(50),
    tel VARCHAR(20),
    email VARCHAR(100)
);


CREATE TABLE Ausstellung (
    austellungid INT AUTO_INCREMENT PRIMARY KEY,
    standortid INT,
    datum_von DATE,
    datum_bis DATE,
    name VARCHAR(100),
    beschreibung TEXT,
    max_tickets INT,
    FOREIGN KEY (standortid) REFERENCES Standort(standortid)
);


CREATE TABLE Ticket (
    ticketid INT AUTO_INCREMENT PRIMARY KEY,
    userid INT,
    ausstellungid INT,
    kaufdatum DATE,
    gueltigkeit DATE,
    preis DECIMAL(10,2),
    FOREIGN KEY (userid) REFERENCES User(userid),
    FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid)
);


CREATE TABLE Gutschein (
    gutscheinid INT AUTO_INCREMENT PRIMARY KEY,
    code VARCHAR(50) UNIQUE,
    rabatt INT CHECK (rabatt BETWEEN 0 AND 100),
    ausstellungid INT,
    gueltigkeit DATE,
    FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid)
);


CREATE TABLE News (
    newsid INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    beschreibung TEXT,
    datum DATE
);



-- User-Daten
INSERT INTO User (vorname, nachname, strasse, hausnr, postleitzahl, ort, land, tel, email, isAdmin, password)
VALUES
    ('Max', 'Muster', 'Musterstraße', '1', '12345', 'Musterstadt', 'Deutschland', '0123456789', 'max@muster.de', FALSE, 'passwort123'),
    ('Anna', 'Beispiel', 'Beispielweg', '5a', '54321', 'Beispielstadt', 'Deutschland', '0987654321', 'anna@beispiel.de', TRUE, 'adminpass');

-- Standort-Daten
INSERT INTO Standort (strasse, hausnr, plz, ort, land, tel, email)
VALUES
    ('Galeriestraße', '10', '10115', 'Berlin', 'Deutschland', '030123456', 'kontakt@galerie-berlin.de'),
    ('Kunstallee', '22b', '50667', 'Köln', 'Deutschland', '0221123456', 'info@kunst-koeln.de');

-- Ausstellung-Daten
INSERT INTO Ausstellung (standortid, datum_von, datum_bis, name, beschreibung, max_tickets)
VALUES
    (1, '2025-07-01', '2025-08-31', 'Moderne Meisterwerke', 'Eine Sammlung moderner Kunstwerke aus Europa.', 200),
    (2, '2025-09-10', '2025-10-20', 'Kunst der Antike', 'Ausstellung antiker Skulpturen und Gemälde.', 150);

-- Gutschein-Daten (Spaltennamen korrigiert)
INSERT INTO Gutschein (code, rabatt, ausstellungid, gueltigkeit)
VALUES
    ('SOMMER2025', 15, 1, '2025-08-31'),
    ('HERBST25', 25, 2, '2025-10-15');

-- Ticket-Daten (Spaltennamen korrigiert)
INSERT INTO Ticket (userid, ausstellungid, kaufdatum, gueltigkeit, preis)
VALUES
    (1, 1, '2025-06-01', '2025-07-15', 12.50),
    (2, 2, '2025-06-05', '2025-09-15', 10.00);

-- News-Daten
INSERT INTO News (name, beschreibung, datum)
VALUES
    ('Neuer Standort eröffnet', 'Unsere Galerie in Köln ist jetzt geöffnet!', '2025-06-01'),
    ('Frühbucher-Rabatt', 'Sichern Sie sich jetzt 15% Rabatt auf unsere Sommerausstellung.', '2025-05-20');

--Änderungen:

ALTER TABLE austellung
    ADD preis decimal NOT NULL

ALTER TABLE ticket
    DROP COLUMN preis


ALTER TABLE user
    MODIFY COLUMN userid INT NOT NULL AUTO_INCREMENT;

ALTER TABLE ticket
    MODIFY COLUMN ticketid INT NOT NULL AUTO_INCREMENT;

ALTER TABLE standort
    MODIFY COLUMN standortid INT NOT NULL AUTO_INCREMENT;

ALTER TABLE news
    MODIFY COLUMN newsid INT NOT NULL AUTO_INCREMENT;

ALTER TABLE gutschein
    MODIFY COLUMN gutscheinid INT NOT NULL AUTO_INCREMENT;

ALTER TABLE ausstellung
    MODIFY COLUMN austellungid INT NOT NULL AUTO_INCREMENT;

ALTER TABLE user
    MODIFY COLUMN isAdmin BOOLEAN DEFAULT FALSE;

ALTER TABLE user
    ADD validUntil DATETIME NOT NULL DEFAULT '3025-01-01 00:00:00';