#!/bin/bash set -e # Config CONTAINER_NAME="database" DB_USER="main" DB_NAME="main" TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") FILE_NAME="backup-$TIMESTAMP.sql.br" # Wir holen uns den parameter --skip-backup, um zu entscheiden, ob wir ein Backup machen wollen SKIP_BACKUP=false while [[ $# -gt 0 ]]; do case $1 in --skip-backup) SKIP_BACKUP=true shift # Remove the argument from the list ;; *) echo "Unbekannter Parameter: $1" exit 1 ;; esac done REQUIRED_CONFIRMATION='Ja, ich möchte alle Daten unwiderruflich löschen.' echo "⚠️ WARNUNG: Diese Aktion wird alle Tabellen und Einträge in der Datenbank vollständig löschen!" echo "Um fortzufahren, tippe exakt: \"$REQUIRED_CONFIRMATION\"" echo read -p "> " USER_CONFIRMATION if [[ "$USER_CONFIRMATION" != "$REQUIRED_CONFIRMATION" ]]; then echo "❌ Falsche Eingabe. Abbruch." exit 1 fi if [[ "$SKIP_BACKUP" == false ]]; then echo "📦 Backup wird erstellt..." docker exec -t "$CONTAINER_NAME" pg_dumpall -c -U "$DB_USER" | brotli --quality=1 > "$FILE_NAME" echo "✅ Backup abgeschlossen: $FILE_NAME" fi echo "🧨 Alle Daten aus allen Tabellen werden gelöscht..." # Generate and run TRUNCATE statements for all tables in the public schema docker exec -i "$CONTAINER_NAME" psql -U "$DB_USER" "postgres" <<'EOSQL' DROP DATABASE IF EXISTS main; CREATE DATABASE main WITH OWNER main ENCODING 'UTF8'; EOSQL echo "✅ Alle Tabellen gelöscht und Schema zurückgesetzt." echo "🚀 Datenbankbereinigung abgeschlossen."