#!/bin/bash # MYP Datenbank Initialisierungs-Skript # Dieses Skript erstellt die erforderlichen Datenbanktabellen für das MYP Backend echo "=== MYP Datenbank Initialisierung ===" echo "" # Prüfe, ob sqlite3 installiert ist if ! command -v sqlite3 &> /dev/null; then echo "FEHLER: sqlite3 ist nicht installiert." echo "Bitte installiere sqlite3 mit deinem Paketmanager, z.B. 'apt install sqlite3'" exit 1 fi # Erstelle Instance-Ordner, falls nicht vorhanden echo "Erstelle instance-Ordner, falls nicht vorhanden..." mkdir -p instance/backups # Prüfen, ob die Datenbank bereits existiert if [ -f "instance/myp.db" ]; then echo "Datenbank existiert bereits." echo "Erstelle Backup in instance/backups..." cp instance/myp.db "instance/backups/myp_$(date '+%Y%m%d_%H%M%S').db" fi # Erstelle die Datenbank und ihre Tabellen echo "Erstelle neue Datenbank..." sqlite3 instance/myp.db <<EOF PRAGMA foreign_keys = ON; CREATE TABLE IF NOT EXISTS user ( id TEXT PRIMARY KEY, username TEXT UNIQUE NOT NULL, password_hash TEXT NOT NULL, display_name TEXT, email TEXT UNIQUE, role TEXT DEFAULT 'user' ); CREATE TABLE IF NOT EXISTS session ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL, expires_at TIMESTAMP NOT NULL, FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS socket ( id TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT NOT NULL, status INTEGER DEFAULT 0, ip_address TEXT ); CREATE TABLE IF NOT EXISTS job ( id TEXT PRIMARY KEY, socket_id TEXT NOT NULL, user_id TEXT NOT NULL, start_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, duration_in_minutes INTEGER NOT NULL, comments TEXT, aborted INTEGER DEFAULT 0, abort_reason TEXT, FOREIGN KEY (socket_id) REFERENCES socket (id) ON DELETE CASCADE, FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE ); EOF # Setze Berechtigungen für die Datenbankdatei chmod 644 instance/myp.db echo "" echo "=== Datenbank-Initialisierung abgeschlossen ===" echo "" echo "Du kannst jetzt einen Admin-Benutzer über die Web-Oberfläche registrieren." echo "Der erste registrierte Benutzer wird automatisch zum Admin." echo "" echo "Starte den Server mit:" echo "python app.py" echo "" echo "Alternativ kannst du einen Admin-Benutzer über die API erstellen mit:" echo "curl -X POST http://localhost:5000/api/create-initial-admin -H \"Content-Type: application/json\" -d '{\"username\":\"admin\",\"password\":\"password\",\"displayName\":\"Administrator\"}'" echo ""