#!/bin/bash

# Define o caminho absoluto para a pasta onde o banco de dados será restaurado
PATH_TO_DB="/home/intranet"
# Define o nome do banco de dados que será restaurado
DB_NAME="intranet*.gbk"
BancoDados="intranet.gdb"

# Carregar variáveis de /root/.env
dos2unix /etc/secrets/.env
source /etc/secrets/.env

#inici Firebird
/opt/firebird/bin/fbguard -pidfile /var/run/firebird/firebird.pid -daemon -forever

# Define as permissões corretas para o arquivo do banco de dados
chmod 755 -R /home/intranet
chown firebird:firebird -R /home/intranet

# Verifica se o usuário já existe
if /opt/firebird/bin/gsec -user sysdba -password 123456 -display | grep "$USUARIO_INTRANET"; then
    echo "O usuário $USUARIO_INTRANET já existe. Pulando a adição do usuário."
else
    # Adiciona o novo usuário
    echo "Adicionando o usuário $USUARIO_INTRANET."
    /opt/firebird/bin/gsec -user sysdba -password 123456 -add "$USUARIO_INTRANET" -pw "$PASSWORD_INTRANET"
fi

# Localiza o arquivo .bz2 correspondente, se existir
BZ2_FILE=$(ls $PATH_TO_DB/intranet-*.gbk.bz2 2>/dev/null)

# Se o arquivo .bz2 existir, descompacte-o
if [ -n "$BZ2_FILE" ]; then
    echo "Encontrado arquivo .bz2: $BZ2_FILE. Descompactando..."
    bzip2 -d "$BZ2_FILE"
    if [ $? -ne 0 ]; then
        echo "Erro ao descompactar o arquivo $BZ2_FILE."
        exit 1
    fi
    # Atualiza o nome do arquivo .gbk após a descompactação
    DB_NAME="intranet*.gbk"
fi

# Verifica se o arquivo .gbk existe
GBK_FILE=$(ls $PATH_TO_DB/intranet-*.gbk 2>/dev/null)
if [ -n "$GBK_FILE" ]; then
    echo "Arquivo .gbk encontrado: $GBK_FILE. Restaurando o banco de dados..."
    /opt/firebird/bin/gbak -user "$USUARIO_INTRANET" -password "$PASSWORD_INTRANET" -create -v "$GBK_FILE" "$PATH_TO_DB/$BancoDados"
    chmod 755 "$PATH_TO_DB/$BancoDados"
    chown firebird:firebird "$PATH_TO_DB/$BancoDados"

    # Verifica se o comando de restauração foi executado com sucesso
    if [ $? -eq 0 ]; then
        echo "O banco de dados foi restaurado com sucesso na pasta $PATH_TO_DB."
    else
        echo "Ocorreu um erro ao restaurar o banco de dados."
        exit 1
    fi
else
    echo "Nenhum arquivo .gbk foi encontrado na pasta $PATH_TO_DB."
    exit 1
fi
