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

# Basic restore helper for pgBackRest + Patroni environments.
#
# Usage:
#   sudo ./restore-example.sh /path/to/restore.env
#
# This is intentionally conservative and does NOT fully automate restore of a live cluster.
# It prepares a single host for restore testing or disaster recovery practice.

ENV_FILE="${1:-}"
if [[ -z "$ENV_FILE" || ! -f "$ENV_FILE" ]]; then
  echo "Usage: sudo $0 /path/to/restore.env"
  exit 1
fi

set -a
source "$ENV_FILE"
set +a

: "${STANZA:?Missing STANZA}"
: "${REPO_HOST:?Missing REPO_HOST}"
: "${REPO_PATH:?Missing REPO_PATH}"
: "${PGBACKREST_DB_PATH:?Missing PGBACKREST_DB_PATH}"

cat <<EOF
Restore example steps:

1. Stop Patroni on the target restore host:
   cd /opt/db-stack && docker compose stop patroni

2. Make sure pgbackrest config exists on this host:
   /etc/pgbackrest/pgbackrest.conf

3. Optional: inspect backups:
   sudo -u postgres pgbackrest --stanza=${STANZA} info

4. Move old data dir away:
   mv ${PGBACKREST_DB_PATH} ${PGBACKREST_DB_PATH}.bak.\$(date +%s)

5. Restore latest backup:
   sudo -u postgres pgbackrest --stanza=${STANZA} --delta restore

6. Start Patroni:
   cd /opt/db-stack && docker compose start patroni

7. Validate:
   docker exec -it \$(docker ps --format '{{.Names}}' | grep patroni | head -n1) patronictl -c /etc/patroni/patroni.yml list
EOF
