#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" BACKUP_FILE="${1:-${BACKUP_FILE:-}}" if [[ -z "${BACKUP_FILE:-}" ]]; then echo "Usage: $0 " >&2 exit 1 fi if [[ ! -f "$BACKUP_FILE" ]]; then echo "[ERR] backup file not found: $BACKUP_FILE" >&2 exit 1 fi if [[ -z "${DATABASE_URL:-}" ]]; then echo "[ERR] DATABASE_URL is required" >&2 exit 1 fi echo "[INFO] DB restore start: $BACKUP_FILE" if command -v pg_restore >/dev/null 2>&1; then pg_restore --clean --if-exists --no-owner --no-acl -d "$DATABASE_URL" "$BACKUP_FILE" echo "[OK] DB restore done (pg_restore): $BACKUP_FILE" exit 0 fi if ! command -v docker >/dev/null 2>&1; then echo "[ERR] pg_restore not found and docker not available" >&2 exit 1 fi DB_CONTAINER="${DB_CONTAINER:-hyb-oa-trialrun-db}" POSTGRES_DB="${POSTGRES_DB:-}" POSTGRES_USER="${POSTGRES_USER:-}" POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-}" if [[ -z "$POSTGRES_DB" || -z "$POSTGRES_USER" || -z "$POSTGRES_PASSWORD" ]]; then echo "[ERR] Using docker fallback requires POSTGRES_DB/POSTGRES_USER/POSTGRES_PASSWORD" >&2 exit 1 fi cat "$BACKUP_FILE" | docker exec -i -e PGPASSWORD="$POSTGRES_PASSWORD" "$DB_CONTAINER" \ pg_restore --clean --if-exists --no-owner --no-acl -U "$POSTGRES_USER" -d "$POSTGRES_DB" echo "[OK] DB restore done (docker exec): $BACKUP_FILE"