#!/bin/bash
# Installe et configure PostgreSQL sur Debian pour le cours Exploitation de
# données (420-363-MT), selon les conventions du matériel du cours :
#   - usager postgres, mot de passe testtest
#   - port par défaut 5432 (celui du ChocolatDAO.java de Confiserie.zip)
#   - base confiserie avec la table chocolat et un petit jeu de données
#
# Usage : sudo ./installer-postgresql-cours.sh
# Idempotent : peut se relancer sans danger, ne détruit jamais de données.
#
# Créé le 2026-09-01.

set -euo pipefail

if [ "$(id -u)" -ne 0 ]; then
    echo "Ce script doit se lancer avec sudo : sudo $0" >&2
    exit 1
fi

echo "=== 1. Installation des paquets PostgreSQL ==="
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql postgresql-client postgresql-contrib

echo "=== 2. Démarrage et activation du service ==="
systemctl enable --now postgresql
systemctl --no-pager status postgresql | head -5

echo "=== 3. Mot de passe de l'usager postgres (convention du cours) ==="
su postgres -c "psql -c \"ALTER USER postgres PASSWORD 'testtest';\""

echo "=== 4. Base confiserie et table chocolat ==="
if su postgres -c "psql -tAc \"SELECT 1 FROM pg_database WHERE datname = 'confiserie';\"" | grep -q 1; then
    echo "La base confiserie existe déjà, on n'y touche pas."
else
    su postgres -c "createdb confiserie"
    su postgres -c "psql -d confiserie" <<'SQL'
CREATE TABLE chocolat (
    id SERIAL PRIMARY KEY,
    nom VARCHAR(100) NOT NULL,
    description TEXT,
    cacao REAL,
    essence VARCHAR(100)
);

INSERT INTO chocolat (nom, description, cacao, essence) VALUES
    ('Noir intense', 'Une tablette corsée pour les vrais amateurs', 85, 'nature'),
    ('Lait onctueux', 'Le classique doux et crémeux', 40, 'vanille'),
    ('Praliné croquant', 'Éclats de noisettes caramélisées', 55, 'noisette'),
    ('Menthe fraîche', 'Un carré qui réveille', 70, 'menthe'),
    ('Framboise sauvage', 'L''acidulé rencontre le cacao', 64, 'framboise');
SQL
    echo "Base confiserie créée avec 5 chocolats."
fi

echo "=== 5. Vérification ==="
su postgres -c "psql -d confiserie -c 'SELECT nom, cacao FROM chocolat;'"
ss -tln | grep 5432 && echo "PostgreSQL écoute sur le port 5432."

echo
echo "Terminé ! Connexion du cours :"
echo "  URI JDBC   : jdbc:postgresql://localhost:5432/confiserie"
echo "  Usager     : postgres"
echo "  Mot de passe : testtest"
echo "  En console : psql -h localhost -U postgres -d confiserie"
