Compare commits
3
Commits
4e4cfd0de3
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db9062e668 | ||
|
|
c536cf5753 | ||
|
|
db31fecdee |
@@ -5,16 +5,16 @@ CAT – Chorwochenende-Planungs- und Buchungsanwendung.
|
||||
## Inhalt
|
||||
|
||||
- PHP-Anwendung aus `/var/www/html/cat`
|
||||
|
||||
- `database/schema.sql`: idempotente, datenfreie Datenbankstruktur mit `CREATE ... IF NOT EXISTS` und kompatiblen `ALTER TABLE ... ADD COLUMN IF NOT EXISTS`-Migrationen
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Die produktiven Dateien `inc/db.inc.php` und `inc/mail.inc.php` sind aus Sicherheitsgründen nicht versioniert. Sie müssen auf dem Zielsystem separat konfiguriert werden.
|
||||
|
||||
## Datenbank-Update
|
||||
## Datenbankstruktur
|
||||
|
||||
```text
|
||||
mariadb cat < cat_update_2026-09-19.sql
|
||||
mariadb < database/schema.sql
|
||||
```
|
||||
|
||||
Das Update legt die drei Zimmeranzahl-Einstellungen an, ohne vorhandene Daten zu überschreiben.
|
||||
Die Datei legt Datenbank und Tabellen nur an, wenn sie noch nicht existieren. Für bereits vorhandene Tabellen werden fehlende Spalten mit `ALTER TABLE ... ADD COLUMN IF NOT EXISTS` ergänzt. Es werden keine Datensätze, Administratoren oder Preise angelegt.
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
-- CAT database schema
|
||||
-- Schema only: this file creates and evolves structure, but inserts no data.
|
||||
-- Safe to run repeatedly on MariaDB.
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS cat
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE cat;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS participants (
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(255) NOT NULL UNIQUE,
|
||||
allergies TEXT NULL,
|
||||
role VARCHAR(50) NULL CHECK (role IN ('Tagesgast', 'Dauergast')),
|
||||
under_27 TINYINT(1) NOT NULL DEFAULT 0,
|
||||
password_hash VARCHAR(255) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bookings (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
participant_id VARCHAR(36) NOT NULL,
|
||||
type ENUM('Stay', 'Day') NOT NULL,
|
||||
accommodation_type VARCHAR(50) NULL,
|
||||
meal_preferences TEXT NULL,
|
||||
roommate_requests TEXT NULL,
|
||||
early_departure VARCHAR(32) NULL,
|
||||
other_notes TEXT NULL,
|
||||
is_paid TINYINT(1) NOT NULL DEFAULT 0,
|
||||
manual_total_price DECIMAL(10,2) NULL,
|
||||
total_price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
||||
CONSTRAINT fk_bookings_participant
|
||||
FOREIGN KEY (participant_id) REFERENCES participants(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS admin_users (
|
||||
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
username VARCHAR(80) NOT NULL UNIQUE,
|
||||
email VARCHAR(255) NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pricing_settings (
|
||||
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
setting_key VARCHAR(80) NOT NULL UNIQUE,
|
||||
price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Compatibility migrations for installations whose tables already exist.
|
||||
-- ADD COLUMN IF NOT EXISTS leaves existing columns and values untouched.
|
||||
ALTER TABLE participants
|
||||
ADD COLUMN IF NOT EXISTS name VARCHAR(255) NOT NULL,
|
||||
ADD COLUMN IF NOT EXISTS email VARCHAR(255) NULL,
|
||||
ADD COLUMN IF NOT EXISTS allergies TEXT NULL,
|
||||
ADD COLUMN IF NOT EXISTS role VARCHAR(50) NULL,
|
||||
ADD COLUMN IF NOT EXISTS under_27 TINYINT(1) NOT NULL DEFAULT 0,
|
||||
ADD COLUMN IF NOT EXISTS password_hash VARCHAR(255) NULL;
|
||||
|
||||
ALTER TABLE bookings
|
||||
ADD COLUMN IF NOT EXISTS participant_id VARCHAR(36) NULL,
|
||||
ADD COLUMN IF NOT EXISTS type ENUM('Stay', 'Day') NULL,
|
||||
ADD COLUMN IF NOT EXISTS accommodation_type VARCHAR(50) NULL,
|
||||
ADD COLUMN IF NOT EXISTS meal_preferences TEXT NULL,
|
||||
ADD COLUMN IF NOT EXISTS roommate_requests TEXT NULL,
|
||||
ADD COLUMN IF NOT EXISTS early_departure VARCHAR(32) NULL,
|
||||
ADD COLUMN IF NOT EXISTS other_notes TEXT NULL,
|
||||
ADD COLUMN IF NOT EXISTS is_paid TINYINT(1) NOT NULL DEFAULT 0,
|
||||
ADD COLUMN IF NOT EXISTS manual_total_price DECIMAL(10,2) NULL,
|
||||
ADD COLUMN IF NOT EXISTS total_price DECIMAL(10,2) NOT NULL DEFAULT 0.00;
|
||||
|
||||
ALTER TABLE admin_users
|
||||
ADD COLUMN IF NOT EXISTS username VARCHAR(80) NULL,
|
||||
ADD COLUMN IF NOT EXISTS email VARCHAR(255) NULL,
|
||||
ADD COLUMN IF NOT EXISTS password_hash VARCHAR(255) NULL,
|
||||
ADD COLUMN IF NOT EXISTS is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
ADD COLUMN IF NOT EXISTS created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
|
||||
|
||||
ALTER TABLE pricing_settings
|
||||
ADD COLUMN IF NOT EXISTS setting_key VARCHAR(80) NULL,
|
||||
ADD COLUMN IF NOT EXISTS price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
||||
ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
|
||||
|
||||
-- No participants, bookings, administrators, or pricing rows are inserted here.
|
||||
-- Create the first administrator and configure prices through the application.
|
||||
Reference in New Issue
Block a user