#!/usr/bin/env bash set -euo pipefail TARGET_DIR="${1:?target dir required}" STAGE="${2:-production}" BACKEND_DIR="$TARGET_DIR/backend" CURRENT_LINK="/opt/yourpart" CURRENT_BACKEND="$CURRENT_LINK/backend" DATA_DIR="/opt/yourpart-data" echo "Updating YourPart Backend..." echo "Ziel: $BACKEND_DIR" echo "Using STAGE: $STAGE" echo "NOTE: .env files will NOT be overwritten" cd "$BACKEND_DIR" echo "Lösche alle generierten Verzeichnisse..." rm -rf node_modules/.cache/ rm -rf logs/ rm -rf tmp/ echo "Installing dependencies..." npm ci --production TEMP_ENV_DIR="/tmp/yourpart-env-backup-$$" mkdir -p "$TEMP_ENV_DIR" echo "Sichere .env-Dateien aus $CURRENT_BACKEND..." if [ -d "$CURRENT_BACKEND" ]; then find "$CURRENT_BACKEND" -maxdepth 1 -name '.env*' -type f -exec cp {} "$TEMP_ENV_DIR/" \; 2>/dev/null || true if [ "$(ls -A "$TEMP_ENV_DIR" 2>/dev/null)" ]; then echo "✓ .env-Dateien gesichert: $(ls "$TEMP_ENV_DIR")" cp "$TEMP_ENV_DIR"/.env* "$BACKEND_DIR"/ 2>/dev/null || true else echo "⚠ Keine .env-Dateien in $CURRENT_BACKEND gefunden" fi fi sudo -n mkdir -p "$DATA_DIR/adult-verification" if [ -f "$BACKEND_DIR/.env" ]; then echo "✓ .env-Datei ist vorhanden" else echo "⚠ WARNUNG: Keine .env-Datei in $BACKEND_DIR gefunden!" fi echo "Setting permissions..." sudo -n chown -R yourpart:yourpart "$BACKEND_DIR" sudo -n chmod -R 755 "$BACKEND_DIR" sudo -n chown -R yourpart:yourpart "$DATA_DIR" sudo -n chmod -R 755 "$DATA_DIR" if [ -f "$BACKEND_DIR/.env" ]; then sudo -n chmod 600 "$BACKEND_DIR/.env" fi echo "Updating systemd service..." sudo -n cp "$TARGET_DIR/yourpart.service" /etc/systemd/system/ sudo -n systemctl daemon-reload echo "Running database synchronization..." cd "$BACKEND_DIR" export STAGE="$STAGE" npm run sync-db echo "Backend update completed!" rm -rf "$TEMP_ENV_DIR"