#!/bin/bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
BACKUP_DIR="${BACKUP_DIR:-$ROOT_DIR/backups}"
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
OUTPUT_FILE="${1:-$BACKUP_DIR/zgz_turismo-$TIMESTAMP.sql}"
CONTAINER_NAME="${CONTAINER_NAME:-zgz_postgres}"
DB_NAME="${DB_NAME:-zgz_turismo}"
DB_USER="${DB_USER:-directus}"

mkdir -p "$BACKUP_DIR"

if ! command -v docker >/dev/null 2>&1; then
  echo "docker is not installed or not in PATH"
  exit 1
fi

if ! docker ps --format '{{.Names}}' | grep -Fxq "$CONTAINER_NAME"; then
  echo "Container '$CONTAINER_NAME' is not running."
  echo "Start the local Directus stack first, then run this script again."
  exit 1
fi

echo "Creating PostgreSQL dump from container '$CONTAINER_NAME'..."
docker exec -t "$CONTAINER_NAME" pg_dump -U "$DB_USER" -d "$DB_NAME" > "$OUTPUT_FILE"

if [ ! -s "$OUTPUT_FILE" ]; then
  echo "Dump file was created but is empty: $OUTPUT_FILE"
  exit 1
fi

echo "Dump written to: $OUTPUT_FILE"
echo "Next step: copy this file to the server and run scripts/restore_server_db.sh there."
