#!/usr/bin/env bash
# ============================================================
# backup.sh — emporte TON CONTENU (base Directus + photos)
#
# A lancer la ou la stack tourne deja (ta machine locale).
# Produit dans ./backups/ :
#   - db-<date>.sql.gz   : dump complet Postgres (textes, series, contacts)
#   - uploads-<date>.tar.gz : toutes les photos uploadees dans Directus
#
# Usage :   bash scripts/backup.sh
# Conteneurs (override si besoin) :
#   PG_CONTAINER=... DIRECTUS_CONTAINER=... bash scripts/backup.sh
# ============================================================
set -euo pipefail

cd "$(dirname "$0")/.."

# Charge .env pour POSTGRES_USER / POSTGRES_DB
if [ -f .env ]; then set -a; . ./.env; set +a; fi

PG_CONTAINER="${PG_CONTAINER:-mostuki-postgres}"
DIRECTUS_CONTAINER="${DIRECTUS_CONTAINER:-mostuki-directus}"
PG_USER="${POSTGRES_USER:-directus}"
PG_DB="${POSTGRES_DB:-directus}"

STAMP="$(date +%Y%m%d-%H%M%S)"
OUT="backups"
mkdir -p "$OUT"

echo "==> Dump base Postgres ($PG_CONTAINER / db=$PG_DB)"
docker exec "$PG_CONTAINER" pg_dump -U "$PG_USER" "$PG_DB" | gzip > "$OUT/db-$STAMP.sql.gz"

echo "==> Archive des photos (uploads Directus)"
# /directus/uploads est le chemin des fichiers dans le conteneur Directus
docker exec "$DIRECTUS_CONTAINER" tar czf - -C /directus/uploads . > "$OUT/uploads-$STAMP.tar.gz"

echo ""
echo "OK. Fichiers crees :"
ls -lh "$OUT/db-$STAMP.sql.gz" "$OUT/uploads-$STAMP.tar.gz"
echo ""
echo "Transfere ces 2 fichiers sur le serveur, puis lance scripts/restore.sh la-bas."
