#!/usr/bin/env bash set -euo pipefail if [[ $# -lt 2 || "$1" != "--yes-restore" ]]; then echo "Usage: $0 --yes-restore " >&2 exit 1 fi ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT_DIR" backup_dir="$2" db_dump_path="$backup_dir/db.dump" media_archive_path="$backup_dir/media.tar.gz" if [[ ! -f "$db_dump_path" || ! -f "$media_archive_path" ]]; then echo "Backup files missing in $backup_dir" >&2 exit 1 fi set -a . ./.env set +a docker compose exec -T db sh -lc "PGPASSWORD='$POSTGRES_PASSWORD' psql -U '$POSTGRES_USER' -d postgres -c \"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '$POSTGRES_DB' AND pid <> pg_backend_pid();\"" docker compose exec -T db sh -lc "PGPASSWORD='$POSTGRES_PASSWORD' psql -U '$POSTGRES_USER' -d postgres -c \"DROP DATABASE IF EXISTS \\\"$POSTGRES_DB\\\";\"" docker compose exec -T db sh -lc "PGPASSWORD='$POSTGRES_PASSWORD' psql -U '$POSTGRES_USER' -d postgres -c \"CREATE DATABASE \\\"$POSTGRES_DB\\\";\"" docker compose exec -T db sh -lc "PGPASSWORD='$POSTGRES_PASSWORD' pg_restore -U '$POSTGRES_USER' -d '$POSTGRES_DB' --no-owner --no-privileges" < "$db_dump_path" rm -rf "$ROOT_DIR/backend/media" mkdir -p "$ROOT_DIR/backend" tar -C "$ROOT_DIR/backend" -xzf "$media_archive_path" echo "Restore completed from $backup_dir"