CREATE TABLE user (
                      userid INT AUTO_INCREMENT PRIMARY KEY,
                      vorname VARCHAR(50),
                      nachname VARCHAR(50),
                      straße 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,
                          straße VARCHAR(100),
                          hausnr VARCHAR(10),
                          postleitzahl 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,
                        eventid INT,
                        kaufdatum DATE,
                        gültigkeitsdatum DATE,
                        preis DECIMAL(10,2),
                        FOREIGN KEY (userid) REFERENCES User(userid),
                        FOREIGN KEY (eventid) REFERENCES Ausstellung(austellungid)
);


CREATE TABLE gutschein (
                           gutscheinid INT AUTO_INCREMENT PRIMARY KEY,
                           code VARCHAR(50) UNIQUE,
                           rabatt INT CHECK (rabatt BETWEEN 0 AND 100),
                           eventid INT,
                           gültigkeit DATE,
                           FOREIGN KEY (eventid) REFERENCES Ausstellung(austellungid)
);


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

--Testdaten

INSERT INTO user (vorname, nachname, straße, 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');


INSERT INTO standort (straße, hausnr, postleitzahl, 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');


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);


INSERT INTO gutschein (code, rabatt, eventid, gültigkeit)
VALUES
    ('SOMMER2025', 15, 1, '2025-08-31'),
    ('HERBST25', 25, 2, '2025-10-15');


INSERT INTO ticket (userid, eventid, kaufdatum, gültigkeitsdatum, preis)
VALUES
    (1, 1, '2025-06-01', '2025-07-15', 12.50),
    (2, 2, '2025-06-05', '2025-09-15', 10.00);


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';