#!/bin/bash # database/scripts/restore.sh set -e # ============================================================================ # CONFIGURATION # ============================================================================ CONTAINER_NAME="${CONTAINER_NAME:-aurganize-postgres}" # Same path as backup.sh (HOST system) BACKUP_DIR="${BACKUP_DIR:-$HOME/workspace/db_backup/aurganize_backups}" DB_NAME="${DB_NAME:-aurganize_dev}" DB_USER="${DB_USER:-aurganize_backend_api}" # ============================================================================ # CHECK ARGUMENTS # ============================================================================ if [ -z "$1" ]; then echo "Usage: $0 " echo "" echo "Available backups:" ls -lh "${BACKUP_DIR}/${DB_NAME}"_*.sql.gz 2>/dev/null || echo "No backups found" exit 1 fi BACKUP_FILE="$1" if [ ! -f "$BACKUP_FILE" ]; then echo "❌ Backup file not found: $BACKUP_FILE" exit 1 fi echo "===================================================================" echo "PostgreSQL Restore (Docker)" echo "===================================================================" echo "⚠️ WARNING: This will ERASE all data in database \"${DB_NAME}\"!" echo "Backup file: ${BACKUP_FILE}" echo "" read -p "Type 'yes' to continue: " CONFIRM if [ "$CONFIRM" != "yes" ]; then echo "Aborted." exit 0 fi echo "" echo "Dropping & recreating database inside Docker container..." # ============================================================================ # DROP + CREATE DATABASE INSIDE DOCKER # ============================================================================ docker exec -i "${CONTAINER_NAME}" psql -U postgres -c "DROP DATABASE IF EXISTS ${DB_NAME};" docker exec -i "${CONTAINER_NAME}" psql -U postgres -c "CREATE DATABASE ${DB_NAME} OWNER ${DB_USER};" echo "✓ Database recreated" echo "" # ============================================================================ # RESTORE DATABASE # ============================================================================ echo "Restoring backup into Docker container..." gunzip < "${BACKUP_FILE}" | docker exec -i "${CONTAINER_NAME}" psql -U "${DB_USER}" -d "${DB_NAME}" echo "" echo "===================================================================" echo "Restore Complete!" echo "==================================================================="