fastcheck/server/restore_backup.sh
2026-04-08 13:58:46 -04:00

59 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
PORT="${PORT:-3010}"
BASE_URL="${BASE_URL:-http://localhost:${PORT}/api}"
EMAIL="${EMAIL:-}"
PASSWORD="${PASSWORD:-}"
BACKUP_NAME="${BACKUP_NAME:-backup-2026-04-04T06-33-19-418Z}"
MODE="${MODE:-dropAndInsert}"
if [[ -z "${EMAIL}" || -z "${PASSWORD}" ]]; then
echo "Imposta EMAIL e PASSWORD. Esempio:" >&2
echo " EMAIL='superadmin@gmail.com' PASSWORD='...' $0" >&2
exit 1
fi
login_payload="$(printf '{"email":"%s","password":"%s"}' "${EMAIL//\"/\\\"}" "${PASSWORD//\"/\\\"}")"
login_resp="$(curl -sS -X POST "${BASE_URL}/auth/login" \
-H "Content-Type: application/json" \
-d "${login_payload}")"
extract_token() {
local resp="$1"
if command -v jq >/dev/null 2>&1; then
jq -r '.token // empty' <<<"$resp"
return
fi
if command -v python3 >/dev/null 2>&1; then
python3 - <<'PY' "$resp"
import json, sys
try:
print(json.loads(sys.argv[1]).get("token","") or "")
except Exception:
print("")
PY
return
fi
sed -n 's/.*"token"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' <<<"$resp" | head -n 1
}
token="$(extract_token "$login_resp")"
if [[ -z "${token}" ]]; then
echo "Login fallito o token non trovato. Risposta:" >&2
printf '%s\n' "$login_resp" >&2
exit 1
fi
restore_payload="$(printf '{"backupName":"%s","mode":"%s"}' "${BACKUP_NAME//\"/\\\"}" "${MODE//\"/\\\"}")"
echo "Restore start: backup=${BACKUP_NAME} mode=${MODE} collections=ALL"
restore_resp="$(curl -sS -X POST "${BASE_URL}/admin/database/restore" \
-H "Authorization: Bearer ${token}" \
-H "Content-Type: application/json" \
-d "${restore_payload}")"
echo "$restore_resp"