#!/usr/bin/env bash
#
# Mise à jour du package alcyon/schema (staging/prod).
#
# Usage :
#   bash deploy.sh                 # met à jour sur dev (branche livrée)
#   BRANCH=xxx bash deploy.sh      # autre branche
#
# schema N'EST PAS un service : pas de port, pas de .env, pas de process.
# C'est une dépendance composer "path" consommée par estair ("url": "../schema").
#
# Ce qu'il porte : le SOCLE de schéma standard des backends Alcyon — colonnes
# obligatoires (uuid, name UNIQUE, audit, soft-delete), helpers de migrations
# idempotentes, et l'AUDIT DE CONFORMITÉ que chaps interroge en étape 0 de
# `metadata:regenerate-all`.
#
# ─── LE PIÈGE ─────────────────────────────────────────────────────────────────
# Ce package était ABSENT de l'orchestrateur : il n'était donc jamais mis à jour
# sur le serveur. Deux conséquences en cascade :
#   1. estair pouvait tourner sur une version périmée du socle (ses migrations
#      `*_socle_*` s'appuient sur les helpers du package) ;
#   2. l'audit de conformité appelé par chaps refusait la régénération des
#      métadonnées — « Schéma source NON CONFORME au socle ».
#
# Composer symlinke le package : le code devient actif immédiatement dans estair,
# MAIS ses migrations et ses caches ne se rejouent pas tout seuls.
#   → REDÉPLOYER estair après une mise à jour (bash deploy.sh), PUIS chaps,
#     dont la régénération audite le schéma d'estair.
# ──────────────────────────────────────────────────────────────────────────────

set -euo pipefail

APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BRANCH="${BRANCH:-dev}"
cd "$APP_DIR"

log()  { echo -e "\n\033[1;36m==> $*\033[0m"; }
die()  { echo -e "\n\033[1;31m✘ $*\033[0m" >&2; exit 1; }

CURRENT_SHA=$(git rev-parse HEAD)
log "Révision actuelle : $CURRENT_SHA  (rollback : git reset --hard $CURRENT_SHA)"

log "Récupération du code ($BRANCH)"
git fetch origin
git rev-parse --verify "origin/$BRANCH" >/dev/null 2>&1 \
    || die "La branche '$BRANCH' n'existe pas sur origin."
git reset --hard "origin/$BRANCH"

log "schema à jour — $(git rev-parse --short HEAD)"
echo -e "\033[1;33m! Redéployer les apps hôtes pour appliquer migrations + caches :\033[0m"
echo -e "\033[1;33m  estair (bash deploy.sh), PUIS chaps (son audit lit le schéma d'estair).\033[0m"
