#!/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 ""