#!/usr/bin/env bash
# Din mașina locală: upload listara.sql + replace COMPLET DB producție.
# Usage:
#   bash deploy/linux/push-sql-full-replace.sh /home/asterix/Desktop/listara.sql
#   DEPLOY_CONFIG=deploy/deploy.conf.listara bash deploy/linux/push-sql-full-replace.sh /path/to/dump.sql

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LIB_DIR="$(cd "${SCRIPT_DIR}/../lib" && pwd)"
# shellcheck source=../lib/common.sh
source "${LIB_DIR}/common.sh"

SQL_FILE="${1:-}"
[[ -n "${SQL_FILE}" ]] || die "Usage: $0 /path/to/listara.sql"
[[ -f "${SQL_FILE}" ]] || die "File not found: ${SQL_FILE}"

load_config

REMOTE_SQL="/tmp/listara.sql"
REMOTE_SCRIPT="/opt/apps/scripts/import-local-db-full-replace.sh"
LOCAL_SCRIPT="${SCRIPT_DIR}/import-local-db-full-replace.sh"

echo "ATENȚIE: aceasta ÎNLOCUIEȘTE COMPLET baza de date de pe ${DEPLOY_HOST} (${REMOTE_DB_DATABASE})."
echo "Dump local: ${SQL_FILE}"
read -r -p "Continui? (yes/no): " confirm
[[ "${confirm}" == "yes" ]] || die "Anulat."

log "Upload SQL → ${DEPLOY_USER}@${DEPLOY_HOST}:${REMOTE_SQL}"
if [[ -n "${SSH_CONFIG_FILE:-}" && -f "${SSH_CONFIG_FILE}" ]]; then
  scp -F "${SSH_CONFIG_FILE}" "${SQL_FILE}" "${DEPLOY_USER}@${DEPLOY_HOST}:${REMOTE_SQL}"
  scp -F "${SSH_CONFIG_FILE}" "${LOCAL_SCRIPT}" "${DEPLOY_USER}@${DEPLOY_HOST}:${REMOTE_SCRIPT}"
else
  scp -i "${SSH_KEY_PATH}" -P "${DEPLOY_PORT}" \
    -o "UserKnownHostsFile=${SSH_KNOWN_HOSTS}" \
    "${SQL_FILE}" "${DEPLOY_USER}@${DEPLOY_HOST}:${REMOTE_SQL}"
  scp -i "${SSH_KEY_PATH}" -P "${DEPLOY_PORT}" \
    -o "UserKnownHostsFile=${SSH_KNOWN_HOSTS}" \
    "${LOCAL_SCRIPT}" "${DEPLOY_USER}@${DEPLOY_HOST}:${REMOTE_SCRIPT}"
fi

ssh_cmd "chmod +x ${REMOTE_SCRIPT} && bash ${REMOTE_SCRIPT} ${REMOTE_SQL}"
log "Replace complet finalizat."
