#!/bin/bash

# TimeClock MySQL Setup Script
# Erstellt automatisch Datenbank und Benutzer

set -e

echo "🕐 TimeClock - MySQL Setup"
echo "=========================="
echo ""

# Farben für Output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Standardwerte
DB_NAME="stechuhr2"
DEFAULT_USER="timeclock_user"
DEFAULT_PASSWORD="timeclock_dev_2025"

echo "Dieses Script erstellt:"
echo "  - Datenbank: $DB_NAME"
echo "  - Benutzer: $DEFAULT_USER"
echo ""

# MySQL Root-Passwort abfragen
read -sp "MySQL Root-Passwort eingeben: " MYSQL_ROOT_PASSWORD
echo ""
echo ""

# Test MySQL-Verbindung
echo "Teste MySQL-Verbindung..."
if ! mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SELECT 1;" &> /dev/null; then
    echo -e "${RED}❌ Fehler: MySQL-Verbindung fehlgeschlagen${NC}"
    echo "Bitte prüfen Sie:"
    echo "  - MySQL Server läuft: sudo systemctl status mysql"
    echo "  - Root-Passwort ist korrekt"
    exit 1
fi
echo -e "${GREEN}✅ MySQL-Verbindung erfolgreich${NC}"
echo ""

# Benutzer-Credentials abfragen
read -p "Datenbank-Benutzer [$DEFAULT_USER]: " DB_USER
DB_USER=${DB_USER:-$DEFAULT_USER}

read -sp "Passwort für '$DB_USER' [$DEFAULT_PASSWORD]: " DB_PASSWORD
echo ""
DB_PASSWORD=${DB_PASSWORD:-$DEFAULT_PASSWORD}
echo ""

# Datenbank und Benutzer erstellen
echo "Erstelle Datenbank und Benutzer..."

mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<MYSQL_SCRIPT
-- Datenbank erstellen
CREATE DATABASE IF NOT EXISTS $DB_NAME 
  CHARACTER SET utf8mb4 
  COLLATE utf8mb4_unicode_ci;

-- Benutzer erstellen (falls existiert, überspringen)
CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' 
  IDENTIFIED BY '$DB_PASSWORD';

-- Berechtigungen vergeben
GRANT ALL PRIVILEGES ON $DB_NAME.* 
  TO '$DB_USER'@'localhost';

-- Privilegien neu laden
FLUSH PRIVILEGES;

-- Info ausgeben
SELECT 'Datenbank erstellt' AS Status;
SHOW DATABASES LIKE '$DB_NAME';
SELECT User, Host FROM mysql.user WHERE User='$DB_USER';
MYSQL_SCRIPT

if [ $? -eq 0 ]; then
    echo -e "${GREEN}✅ Datenbank und Benutzer erfolgreich erstellt${NC}"
    echo ""
else
    echo -e "${RED}❌ Fehler beim Erstellen${NC}"
    exit 1
fi

# .env Datei erstellen/aktualisieren
ENV_FILE=".env"
echo "Aktualisiere .env Datei..."

cat > "$ENV_FILE" <<ENV_CONTENT
# Server-Konfiguration
PORT=3010
NODE_ENV=development

# MySQL Datenbank-Verbindung
DB_HOST=localhost
DB_PORT=3306
DB_USER=$DB_USER
DB_PASSWORD=$DB_PASSWORD
DB_NAME=$DB_NAME

# Datenbank-Optionen
DB_LOGGING=false
DB_TIMEZONE=+01:00
DB_POOL_MAX=10
DB_POOL_MIN=0

# JWT-Konfiguration
JWT_SECRET=timeclock-dev-secret-change-in-production-12345
JWT_EXPIRATION=24h

# E-Mail-Konfiguration (für Passwort-Reset)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM=noreply@timeclock.com
ENV_CONTENT

echo -e "${GREEN}✅ .env Datei erstellt${NC}"
echo ""

# Test-Verbindung
echo "Teste Verbindung mit neuen Credentials..."
if mysql -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e "SELECT 1;" &> /dev/null; then
    echo -e "${GREEN}✅ Verbindung erfolgreich!${NC}"
else
    echo -e "${RED}❌ Verbindung fehlgeschlagen${NC}"
    exit 1
fi
echo ""

# Zusammenfassung
echo "=========================="
echo -e "${GREEN}🎉 Setup abgeschlossen!${NC}"
echo ""
echo "Ihre Konfiguration:"
echo "  Datenbank: $DB_NAME"
echo "  Benutzer:  $DB_USER"
echo "  Host:      localhost:3306"
echo ""
echo "Die .env Datei wurde erstellt mit den Zugangsdaten."
echo ""
echo "Nächste Schritte:"
echo "  1. Server starten: npm run dev"
echo "  2. Browser öffnen: http://localhost:5010"
echo ""
echo "Erste Schritte:"
echo "  1. Account registrieren unter /register"
echo "  2. Einloggen und Timer starten"
echo ""



