134 lines
4.8 KiB
Bash
Executable file
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
|