Compare commits
3
Commits
4e4cfd0de3
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db9062e668 | ||
|
|
c536cf5753 | ||
|
|
db31fecdee |
@@ -5,16 +5,16 @@ CAT – Chorwochenende-Planungs- und Buchungsanwendung.
|
|||||||
## Inhalt
|
## Inhalt
|
||||||
|
|
||||||
- PHP-Anwendung aus `/var/www/html/cat`
|
- 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
|
## 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.
|
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
|
```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