84 lines
2.5 KiB
Bash
84 lines
2.5 KiB
Bash
#!/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 "" |