mein-sterntours/dev/backups/phase2-offers-2026-04-17/restore.sh
2026-04-22 16:01:27 +02:00

134 lines
4.8 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# Restore-Script: spielt Phase 2 + Offers-Änderungen zurück in den Workspace.
# Voraussetzung: Phase 1 wurde erfolgreich auf Live deployed und migriert.
#
# Nutzung:
# bash dev/backups/phase2-offers-2026-04-17/restore.sh # interaktiv
# bash dev/backups/phase2-offers-2026-04-17/restore.sh --force # ohne Nachfrage
#
# Details siehe MANIFEST.md im selben Verzeichnis.
set -euo pipefail
BACKUP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${BACKUP_DIR}/../../../" && pwd)"
FORCE=false
for arg in "$@"; do
case "$arg" in
--force|-f) FORCE=true ;;
*) echo "Unbekannte Option: $arg"; exit 1 ;;
esac
done
cd "${PROJECT_ROOT}"
echo "=========================================="
echo " Phase-2 + Offers Restore"
echo "=========================================="
echo
echo " Projekt-Root: ${PROJECT_ROOT}"
echo " Backup-Ordner: ${BACKUP_DIR}"
echo
echo " Folgende Änderungen werden zurückgespielt:"
echo " - 18 Migrationen (Phase 2, 3, 4, Offers) nach database/migrations/"
echo " - 6 Offer-Models nach app/Models/ (inkl. Überschreiben von Legacy-Offer.php)"
echo " - Code-Reverts via git checkout \${WIP_COMMIT} -- <datei>"
echo
WIP_COMMIT="e3dc1af"
if ! git cat-file -e "${WIP_COMMIT}" 2>/dev/null; then
echo "FEHLER: Commit ${WIP_COMMIT} existiert nicht in diesem Repo."
echo " Wenn das Repo neu geklont wurde, musst du stattdessen manuell"
echo " die Dateien aus dem Tarball wiederherstellen."
echo " Siehe MANIFEST.md → Abschnitt 'Manuell'."
exit 2
fi
if ! ${FORCE}; then
echo
read -r -p " Wurde Phase 1 auf Live erfolgreich deployed und migriert? (yes/NO): " answer
if [[ "${answer}" != "yes" ]]; then
echo " Abbruch. Bitte erst Phase 1 auf Live einspielen."
exit 3
fi
echo
read -r -p " Trotzdem fortfahren? (yes/NO): " confirm
if [[ "${confirm}" != "yes" ]]; then
echo " Abbruch durch User."
exit 3
fi
fi
echo
echo "--- 1/4 --- Migrationen zurückspielen"
cp -v "${BACKUP_DIR}/FILES/migrations/"*.php database/migrations/
echo "$(ls "${BACKUP_DIR}/FILES/migrations/" | wc -l) Migrationen kopiert"
echo
echo "--- 2/4 --- Offer-Models zurückspielen"
cp -v "${BACKUP_DIR}/FILES/models/"*.php app/Models/
echo " → 6 Models kopiert (inkl. Überschreiben Legacy-Offer.php)"
echo
echo "--- 3/4 --- Code-Reverts aus Git-Commit ${WIP_COMMIT}"
FILES_TO_RESTORE=(
"app/Models/Booking.php"
"app/Models/Customer.php"
"app/Models/Contact.php"
"app/Models/Lead.php"
"app/Repositories/BookingPDFRepository.php"
"app/Repositories/LeadRepository.php"
"app/Repositories/CustomerMailRepository.php"
"app/Http/Controllers/RequestController.php"
"app/Http/Controllers/API/BookingController.php"
"app/Http/Controllers/Admin/ReportController.php"
"app/Http/Controllers/Admin/ReportProviderController.php"
"app/Http/Controllers/Admin/ReportLeadsController.php"
"app/Http/Controllers/LeadController.php"
"app/Http/Controllers/CustomerController.php"
"app/Http/Controllers/ContactController.php"
"app/Services/BookingImport.php"
"app/Console/Commands/SyncNewsletterKulturreisen.php"
"app/Console/Commands/ContactsFindDuplicates.php"
"app/Console/Commands/ContactsMergeDuplicates.php"
"resources/views/customer/mail/modal-show-mail-inner.blade.php"
"resources/views/pdf/components/booking_head.blade.php"
"resources/views/pdf/components/booking_header.blade.php"
"config/filesystems.php"
)
for f in "${FILES_TO_RESTORE[@]}"; do
git checkout "${WIP_COMMIT}" -- "${f}"
echo "${f}"
done
echo
echo "--- 4/4 --- Verifikation"
echo
echo " git status (sollte Phase-2 + Offers-Dateien als modifiziert zeigen):"
git status --short | head -40
echo
echo " Verbliebene Phase-2-Marker im Code (sollten nun wieder da sein):"
PHASE2_HITS=$(grep -rn "inquiry_id" app/ 2>/dev/null | head -5 || true)
if [[ -n "${PHASE2_HITS}" ]]; then
echo "${PHASE2_HITS}"
echo " → OK, Phase-2-Code ist wieder aktiv."
else
echo " (keine gefunden — Restore eventuell nicht vollständig)"
fi
echo
echo "=========================================="
echo " Restore abgeschlossen."
echo "=========================================="
echo
echo " Nächste Schritte:"
echo " 1. php -l auf allen geänderten Dateien (Syntax-Check)"
echo " 2. composer dump-autoload (neue Models registrieren)"
echo " 3. Weiterarbeit an Phase 2 + Offers nach Plan"
echo " 4. Phase-2-Migrationen ausführen:"
echo " php artisan migrate --path=database/migrations/2025_04_15_200001_phase2_rename_customer_to_contacts.php"
echo " php artisan migrate --path=database/migrations/2025_04_15_200002_phase2_rename_lead_to_inquiries.php"
echo " php artisan migrate --path=database/migrations/2025_04_15_200003_phase2_rename_booking_lead_id_to_inquiry_id.php"
echo