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

usage() {
  cat <<USAGE
Usage:
  MYSQL_ROOT_PASSWORD=... $0 <s3-key> [mysql-container]

Example:
  MYSQL_ROOT_PASSWORD=supersecret $0 hfg01/mysql-test-20260518_020000.sql.gz hf-test-backend_mysql

What it does:
  1. Streams a gzipped SQL dump from s3://hangarforge-backups/<s3-key>
  2. Pipes it into mysql inside the target Docker container

Requirements:
  - aws CLI configured with access to hangarforge-backups
  - docker access on the recovery target host
  - MYSQL_ROOT_PASSWORD exported in the shell
USAGE
}

[[ $# -ge 1 ]] || { usage; exit 1; }
[[ -n "${MYSQL_ROOT_PASSWORD:-}" ]] || { echo "MYSQL_ROOT_PASSWORD must be set" >&2; exit 1; }
command -v aws >/dev/null 2>&1 || { echo "aws CLI is required" >&2; exit 1; }
command -v docker >/dev/null 2>&1 || { echo "docker is required" >&2; exit 1; }

BUCKET="${HF_RECOVERY_S3_BUCKET:-hangarforge-backups}"
REGION="${AWS_REGION:-us-east-1}"
S3_KEY="$1"
CONTAINER="${2:-hf-test-backend_mysql}"

printf 'Restoring %s from s3://%s/%s into %s\n' "$S3_KEY" "$BUCKET" "$S3_KEY" "$CONTAINER"
aws s3 cp "s3://${BUCKET}/${S3_KEY}" - --region "$REGION" | gunzip | docker exec -i "$CONTAINER" mysql -u root "-p${MYSQL_ROOT_PASSWORD}"

echo 'MySQL restore completed.'
