#!/bin/bash

# Optionaler Parameter für STAGE (Standard: production)
STAGE=${1:-production}

echo "Deploying YourPart Backend..."
echo "Using STAGE: $STAGE"

# Zum Backend-Verzeichnis wechseln
cd backend

# Alle generierten Verzeichnisse löschen
echo "Lösche alle generierten Verzeichnisse..."
rm -rf node_modules/.cache/
rm -rf logs/
rm -rf tmp/

# Dependencies installieren
echo "Installing dependencies..."
npm ci --production

# Altes Backend löschen und neues kopieren
echo "Lösche altes Backend..."
sudo rm -rf /opt/yourpart/backend

echo "Erstelle Backend-Verzeichnis..."
sudo mkdir -p /opt/yourpart/backend

echo "Kopiere neues Backend..."
sudo cp -r * /opt/yourpart/backend/

# Berechtigungen setzen
echo "Setting permissions..."
sudo chown -R yourpart:yourpart /opt/yourpart/backend
sudo chmod -R 755 /opt/yourpart/backend

# .env-Datei kopieren (falls vorhanden)
if [ -f .env ]; then
    echo "Copying .env file..."
    sudo cp .env /opt/yourpart/backend/
    sudo chown yourpart:yourpart /opt/yourpart/backend/.env
    sudo chmod 600 /opt/yourpart/backend/.env
fi

# Systemd-Service aktualisieren und neu laden
echo "Updating systemd service..."
sudo cp yourpart.service /etc/systemd/system/
sudo systemctl daemon-reload

# Datenbank-Synchronisation durchführen
echo "Running database synchronization..."
cd /opt/yourpart/backend

# STAGE für Schema-Updates verwenden
echo "Running database sync with STAGE=$STAGE..."
export STAGE=$STAGE && npm run sync-db

# Service neu starten
echo "Restarting yourpart service..."
sudo systemctl restart yourpart

# Kurz warten und Status prüfen
sleep 2
echo "Checking service status..."
sudo systemctl status yourpart --no-pager

echo "Backend deployment completed!"
