#!/bin/bash
# Selective dump script for i21 ERP tables
# Usage: ./dump_db.sh DATABASE_NAME

DB=$1
SERVER="50.21.183.111"
USER="irely"
PASS="iRely486"
OUTDIR="/root/dumps/50.21.183.111/$DB"

mkdir -p "$OUTDIR"

TABLES=(
    "tblEMEntityCredential"
    "tblEMEntity"
    "tblPREmployee"
    "tblGLDetail"
    "tblSMAudit"
)

echo "Starting dump for $DB at $(date)" > "$OUTDIR/dump.log"

for tbl in "${TABLES[@]}"; do
    echo "Dumping $DB.$tbl..." | tee -a "$OUTDIR/dump.log"
    
    docker run --rm --network host \
        -v "$OUTDIR:/output" \
        mcr.microsoft.com/mssql/server:2022-latest \
        /opt/mssql-tools18/bin/bcp \
        "SELECT * FROM $DB.dbo.$tbl" \
        queryout "/output/${tbl}.dat" \
        -S "$SERVER" -U "$USER" -P "$PASS" -C \
        -c -t "|" \
        2>&1 | tee -a "$OUTDIR/dump.log"
    
    if [ -f "$OUTDIR/${tbl}.dat" ]; then
        rows=$(wc -l < "$OUTDIR/${tbl}.dat" 2>/dev/null || echo 0)
        size=$(du -h "$OUTDIR/${tbl}.dat" | cut -f1)
        echo "$DB.$tbl: $rows rows, $size" >> "$OUTDIR/manifest.txt"
        echo "  Result: $rows rows, $size" >> "$OUTDIR/dump.log"
    else
        echo "$DB.$tbl: FAILED" >> "$OUTDIR/manifest.txt"
        echo "  Result: FAILED" >> "$OUTDIR/dump.log"
    fi
done

echo "Completed dump for $DB at $(date)" >> "$OUTDIR/dump.log"
echo "=== $DB dump complete ==="
