#!/usr/bin/env bash
set -euo pipefail

MODE="${1:-backup}"
FILE_PATH="${2:-}"
CONTAINER_NAME="${MYSQL_CONTAINER:-db-lab-mysql8}"
MYSQL_PASSWORD="${MYSQL_PASSWORD:-123456}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
BACKUP_DIR="${SCRIPT_DIR}/backups"

mkdir -p "${BACKUP_DIR}"

case "${MODE}" in
  backup)
    TIMESTAMP="$(date +%Y%m%d_%H%M%S)"
    OUTPUT_FILE="${BACKUP_DIR}/lab_backup_${TIMESTAMP}.sql"
    docker exec "${CONTAINER_NAME}" sh -c \
      "exec mysqldump -uroot -p${MYSQL_PASSWORD} --databases StudentCourse SPJ --routines --triggers --set-gtid-purged=OFF" \
      > "${OUTPUT_FILE}"
    echo "Backup created: ${OUTPUT_FILE}"
    ;;
  restore)
    if [[ -z "${FILE_PATH}" ]]; then
      echo "Usage: bash Lab03/manual/backup_restore.sh restore <backup-file.sql>"
      exit 1
    fi
    cat "${FILE_PATH}" | docker exec -i "${CONTAINER_NAME}" sh -c \
      "exec mysql -uroot -p${MYSQL_PASSWORD}"
    echo "Restore completed from: ${FILE_PATH}"
    ;;
  *)
    echo "Usage:"
    echo "  bash Lab03/manual/backup_restore.sh backup"
    echo "  bash Lab03/manual/backup_restore.sh restore <backup-file.sql>"
    exit 1
    ;;
esac
