#!/bin/bash
# Mass dump script for all 54 UAP databases from 50.21.183.111

SERVER="50.21.183.111"
USER="irely"
PASS="iRely486"
OUTPUT_DIR="/root/dumps/50.21.183.111"

# Key tables to export
TABLES=(
    "tblEMEntityCredential"
    "tblEMEntity"
    "tblPREmployee"
    "tblGLDetail"
    "tblSMAudit"
)

echo "=== Starting mass dump at $(date) ==="

# Get list of all databases (filter out stderr messages)
DATABASES=$(docker run --rm --network host mcr.microsoft.com/mssql/server:2022-latest /opt/mssql-tools18/bin/sqlcmd -S "$SERVER" -U "$USER" -P "$PASS" -C -Q "SET NOCOUNT ON; SELECT name FROM sys.databases WHERE name NOT IN ('master','model','msdb','tempdb') ORDER BY name" -h -1 -W 2>/dev/null | grep -E "^[A-Za-z0-9_\\-\\\\]+$" | tail -n +2)

echo "Found $(echo "$DATABASES" | wc -l) databases"

for db in $DATABASES; do
    echo ""
    echo "=== Processing $db ==="
    mkdir -p "$OUTPUT_DIR/$db"
    
    for table in "${TABLES[@]}"; do
        echo "  Exporting $table..."
        
        timeout 300 docker run --rm --network host \
            mcr.microsoft.com/mssql/server:2022-latest \
            /opt/mssql-tools18/bin/sqlcmd \
            -S "$SERVER" -U "$USER" -P "$PASS" -C \
            -d "$db" \
            -Q "SET NOCOUNT ON; SELECT * FROM $table" \
            -s "|" -W \
            2>/dev/null | tail -n +3 > "$OUTPUT_DIR/$db/$table.dat"
        
        # Check file size
        if [ -f "$OUTPUT_DIR/$db/$table.dat" ]; then
            SIZE=$(ls -lh "$OUTPUT_DIR/$db/$table.dat" | awk '{print $5}')
            ROWS=$(wc -l < "$OUTPUT_DIR/$db/$table.dat")
            echo "    ✓ $table: $ROWS rows, $SIZE"
        else
            echo "    ✗ $table: FAILED"
        fi
    done
done

echo ""
echo "=== Mass dump completed at $(date) ==="
echo "=== Total size: $(du -sh $OUTPUT_DIR | awk '{print $1}') ==="
