#!/bin/bash
# ============================================================
# Setup dev database from backup file (no data loss)
# Usage: bash scripts/setup-dev-from-backup.sh [BACKUP_FILE]
#
# Works on MySQL 5.7 and MariaDB — no IF NOT EXISTS syntax.
# ============================================================

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKUP_FILE="${BACKUP_FILE:-$SCRIPT_DIR/../../les-vrais-naturels-backup-2026-03-24.sql}"
if [ -n "$1" ]; then BACKUP_FILE="$1"; fi

DB_USER="${DB_USER:-root}"
DB_PASS="${DB_PASS:-0664571928}"
DB_NAME="${DB_NAME:-les_vrais_naturels}"
DB_HOST="${DB_HOST:-localhost}"
DB_PORT="${DB_PORT:-3306}"

MYSQL_OPTS="-h $DB_HOST -P $DB_PORT -u $DB_USER"
if [ -n "$DB_PASS" ]; then MYSQL_OPTS="$MYSQL_OPTS -p$DB_PASS"; fi

echo "============================================="
echo "  Dev DB Setup from Backup"
echo "============================================="
echo "Backup : $BACKUP_FILE"
echo "Target : $DB_NAME @ $DB_HOST:$DB_PORT"
echo ""

# Step 1: Verify backup file
if [ ! -f "$BACKUP_FILE" ]; then
  echo "ERROR: Backup file not found: $BACKUP_FILE"
  echo "  Set BACKUP_FILE env var or pass path as first argument."
  exit 1
fi

# Step 2: Load backup
echo "[1/5] Chargement du backup..."
mysql $MYSQL_OPTS < "$BACKUP_FILE" \
  && echo "  Backup charge avec succes" \
  || { echo "ERROR: Echec chargement backup"; exit 1; }

# Step 3: Remove old migration names so Prisma only sees our names
echo ""
echo "[2/5] Nettoyage de l'historique des migrations (anciens noms)..."
mysql $MYSQL_OPTS "$DB_NAME" -e \
  "DELETE FROM \`_prisma_migrations\` WHERE \`migration_name\` LIKE '202602%';" 2>/dev/null \
  && echo "  Anciens noms supprimes" \
  || echo "  WARNING: Nettoyage migrations non effectue (table inexistante?)"

# Step 4: Resolve baseline as applied (tables already exist from backup)
echo ""
echo "[3/5] Resolution de 0001_baseline (tables deja presentes)..."
npx prisma migrate resolve --applied "0001_baseline" \
  && echo "  0001_baseline resolu" \
  || echo "  WARNING: Echec resolution 0001_baseline (peut-etre deja resolu)"

# Step 4b: If unitSaleRule column already exists, mark 0002 as applied too
UNIT_SALE_COL=$(mysql $MYSQL_OPTS \
  -sse "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='$DB_NAME' AND TABLE_NAME='products' AND COLUMN_NAME='unitSaleRule';" 2>/dev/null || echo "0")

if [ "$UNIT_SALE_COL" -gt "0" ] 2>/dev/null; then
  echo "  Colonne unitSaleRule presente — resolution de 0002..."
  npx prisma migrate resolve --applied "0002_add_unit_sale_rule" \
    && echo "  0002_add_unit_sale_rule resolu" \
    || echo "  WARNING: Echec resolution 0002 (peut-etre deja resolu)"
fi

# Step 5: Apply any pending migrations (e.g. 0002 adds columns if not present)
echo ""
echo "[4/5] Application des migrations en attente..."
npx prisma migrate deploy \
  && echo "  Migrations appliquees" \
  || { echo "ERROR: Echec application migrations"; exit 1; }

# Step 6: Generate Prisma client
echo ""
echo "[5/5] Generation du client Prisma..."
npx prisma generate \
  && echo "  Client Prisma genere"

echo ""
echo "============================================="
echo "  Base de donnees prete pour le developpement"
echo "============================================="
