#!/usr/bin/env bash
# ============================================================
# Réinitialisation complète de la base 'deviseur'
# ATTENTION : SUPPRIME TOUTES LES TABLES EXISTANTES
# ============================================================

set -euo pipefail

DB_HOST="oz9643-001.eu.clouddb.ovh.net"
DB_PORT="35297"
DB_NAME="deviseur"
DB_USER="admin_deviseur"
# Le mot de passe sera demandé via PGPASSWORD ou prompt

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SCHEMA_FILE="$SCRIPT_DIR/schema.sql"

if [ ! -f "$SCHEMA_FILE" ]; then
    echo "❌ schema.sql introuvable dans $SCRIPT_DIR"
    exit 1
fi

echo "⚠️  ATTENTION : cette opération va SUPPRIMER toutes les tables de la base '$DB_NAME'"
echo "   sur $DB_HOST:$DB_PORT"
read -p "Confirmer ? (tapez 'OUI' en majuscules) : " confirm

if [ "$confirm" != "OUI" ]; then
    echo "Abandon."
    exit 0
fi

if [ -z "${PGPASSWORD:-}" ]; then
    read -s -p "Mot de passe PostgreSQL pour $DB_USER : " PGPASSWORD
    export PGPASSWORD
    echo
fi

PSQL="psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -v ON_ERROR_STOP=1"

echo
echo "→ Suppression de toutes les tables du schéma 'public'..."
$PSQL <<'SQL'
DO $$
DECLARE r RECORD;
BEGIN
    FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
        EXECUTE 'DROP TABLE IF EXISTS public.' || quote_ident(r.tablename) || ' CASCADE';
    END LOOP;
    FOR r IN (SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = 'public') LOOP
        EXECUTE 'DROP SEQUENCE IF EXISTS public.' || quote_ident(r.sequence_name) || ' CASCADE';
    END LOOP;
END $$;
SQL

echo "→ Application du schéma (schema.sql)..."
$PSQL -f "$SCHEMA_FILE"

echo
echo "✓ Base réinitialisée avec succès."
echo
echo "Tables créées :"
$PSQL -c "\dt"
