#!/bin/bash

# Definizione delle variabili
FILEZIP="exp_db_test.tar.gz"
DATABASEIN="FreePlanet"
DATABASEOUT="test_FreePlanet"
FILEMONGODBIN="export_database_$DATABASEIN"
FILEMONGODBOUT="export_database_$DATABASEOUT"
MYDOCKER="mongodbtest"
DIR_OUT="/home/test/"
BACKUP_DIR="/home/pcbuser/backups/temp/"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")

# Carica le configurazioni
source ~/batch/.my_cfg.ini

echo "Attenzione: Questo script creerà un backup del database esistente $DATABASEOUT"
echo "e lo sovrascriverà con i dati dal file $FILEZIP."
echo "Vuoi procedere? (Si/No)"
read -r risposta

if [[ ! $risposta =~ ^[Ss][iI]$ ]]; then
    echo "Operazione annullata dall'utente."
    exit 0
fi

echo "Inizio del processo di importazione del database"
echo "------------------------------------------------"

# Verifica l'esistenza del file .tar.gz
if [ ! -f "/home/pcbuser/$FILEZIP" ]; then
    echo "ERRORE: Il file $FILEZIP non esiste nella directory /home/pcbuser/"
    exit 1
fi

# Backup del database esistente
echo "Creazione di un backup del database esistente...$DATABASEOUT"
if docker exec "$MYDOCKER" mongodump --username admin --password "$PWDDB_TEST" --authenticationDatabase admin --db "$DATABASEOUT" --out "$BACKUP_DIR$DATABASEOUT_$TIMESTAMP"; then
    echo "Backup del database esistente completato con successo in $BACKUP_DIR$DATABASEOUT_$TIMESTAMP"
else
    echo "ERRORE: Impossibile creare il backup del database esistente $DATABASEOUT."
    exit 1
fi

echo "Copiando $FILEZIP nel container $MYDOCKER..."
if docker cp "/home/pcbuser/$FILEZIP" "$MYDOCKER:$DIR_OUT"; then
    echo "File copiato con successo."
else
    echo "ERRORE: Impossibile copiare il file nel container."
    exit 1
fi

echo "Estraendo $FILEZIP in $DIR_OUT all'interno del container..."
if docker exec "$MYDOCKER" tar -xvzf "$DIR_OUT$FILEZIP" -C "$DIR_OUT"; then
    echo "Estrazione completata con successo."
else
    echo "ERRORE: Impossibile estrarre il file nel container."
    exit 1
fi

echo "Rinominando la directory del database da $FILEMONGODBIN a $FILEMONGODBOUT..."
if docker exec "$MYDOCKER" mv "$DIR_OUT$FILEMONGODBIN" "$DIR_OUT$FILEMONGODBOUT"; then
    echo "Directory rinominata con successo."
else
    echo "ERRORE: Impossibile rinominare la directory."
    exit 1
fi

echo "Ripristinando il database MongoDB dal dump..."
if docker exec "$MYDOCKER" mongorestore --username admin --password "$PWDDB_TEST" --authenticationDatabase admin --nsFrom="$DATABASEIN.*" --nsTo="$DATABASEOUT.*" "$DIR_OUT$FILEMONGODBOUT"; then
    echo "Database ripristinato con successo."
else
    echo "ERRORE: Impossibile ripristinare il database."
    exit 1
fi

echo "------------------------------------------------"
echo "Processo di importazione del database completato"