#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" DB_SERVICE="${DB_SERVICE:-db}" DB_NAME="${DB_NAME:-resource_manager}" DB_USER="${DB_USER:-resman}" DB_PASSWORD="${DB_PASSWORD:-resmanpass}" FORCE="${FORCE:-0}" SKIP_PRE_RESTORE_BACKUP="${SKIP_PRE_RESTORE_BACKUP:-0}" if [[ $# -ne 1 ]]; then echo "Usage: $0 " exit 1 fi RESTORE_FILE="$1" if [[ ! -f "$RESTORE_FILE" ]]; then echo "Backup file not found: $RESTORE_FILE" exit 1 fi cd "$ROOT_DIR" if [[ "$FORCE" != "1" ]]; then echo "This will restore '$RESTORE_FILE' into database '$DB_NAME'." echo "Existing data may be overwritten." read -r -p "Type '$DB_NAME' to continue: " CONFIRMATION if [[ "$CONFIRMATION" != "$DB_NAME" ]]; then echo "Restore cancelled." exit 1 fi fi if [[ "$SKIP_PRE_RESTORE_BACKUP" != "1" ]]; then echo "Creating safety backup before restore..." "$ROOT_DIR/scripts/backup-db.sh" fi echo "Restoring database '$DB_NAME' from: $RESTORE_FILE" if [[ "$RESTORE_FILE" == *.gz ]]; then gunzip -c "$RESTORE_FILE" | docker compose exec -T "$DB_SERVICE" \ mariadb \ --user="$DB_USER" \ --password="$DB_PASSWORD" \ "$DB_NAME" else docker compose exec -T "$DB_SERVICE" \ mariadb \ --user="$DB_USER" \ --password="$DB_PASSWORD" \ "$DB_NAME" \ < "$RESTORE_FILE" fi echo "Restore finished."