#!/usr/bin/env bash
# Quick restore script - run this on the target machine after copying files
# Usage: curl -fsSL https://your-domain/restore.sh | bash
#    or: ./restore.sh /path/to/backup.tar.gz

set -euo pipefail

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

log_info()  { echo -e "${GREEN}[INFO]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }

BACKUP_FILE="${1:-$(ls -t ./backups/*.tar.gz 2>/dev/null | head -1)}"
APP_DIR="$(pwd)"

if [ -z "$BACKUP_FILE" ] || [ ! -f "$BACKUP_FILE" ]; then
    log_error "Backup file not found: $BACKUP_FILE"
    log_info "Usage: $0 /path/to/backup.tar.gz"
    exit 1
fi

log_info "Restoring from: $BACKUP_FILE"

# Extract backup
tar -xzf "$BACKUP_FILE" -C "$APP_DIR"

# Extract SQL from archive
SQL_FILE=$(tar -tzf "$BACKUP_FILE" | grep "db_.*\.sql" | head -1)
if [ -n "$SQL_FILE" ]; then
    tar -xzf "$BACKUP_FILE" -C /tmp "$SQL_FILE"
    SQL_PATH="/tmp/$SQL_FILE"
else
    SQL_PATH=$(ls "$APP_DIR"/db_*.sql 2>/dev/null | head -1)
fi

if [ -n "$SQL_PATH" ] && [ -f "$SQL_PATH" ]; then
    log_info "Restoring database..."
    mysql -h"${DB_HOST:-127.0.0.1}" -u"${DB_USER:-root}" ${DB_PASSWORD:+-p"$DB_PASSWORD"} "${DB_NAME:-localpulse}" < "$SQL_PATH" 2>/dev/null || {
        mysql -u"${DB_USER:-root}" ${DB_PASSWORD:+-p"$DB_PASSWORD"} "${DB_NAME:-localpulse}" < "$SQL_PATH"
    }
    rm -f "$SQL_PATH"
    log_info "Database restored"
fi

cd "$APP_DIR"
composer install --no-interaction --prefer-dist --optimize-autoloader
php artisan key:generate --force
php artisan migrate --force
php artisan db:seed --force
php artisan storage:link 2>/dev/null || true
php artisan optimize --force

echo ""
echo "============================================"
echo "  Restore Complete!"
echo "============================================"
echo ""
log_info "Visit: http://localhost"
log_info "Admin: http://localhost/admin"
echo ""