#!/usr/bin/env bash set -euo pipefail # Setup DB Playwright E2E : crée `rubis_test_e2e` si elle n'existe pas, # puis applique les migrations Adonis. # # Usage : pnpm e2e:setup # # Pré-requis : Postgres tournant via docker-compose dev (`pnpm dev:up`). # On utilise `docker exec rubis-postgres` plutôt que `psql`/`createdb` du # système — pas de dépendance client PG à installer en plus. DB_NAME="${E2E_PG_DB_NAME:-rubis_test_e2e}" CONTAINER="${E2E_PG_CONTAINER:-rubis-postgres}" PG_USER="${E2E_PG_USER:-rubis}" # psql se connecte par défaut sur une DB du même nom que l'user. On force # `postgres` (DB système toujours présente) pour les commandes admin # (vérification + CREATE DATABASE). ADMIN_DB="${E2E_PG_ADMIN_DB:-postgres}" # Vérifie que le container tourne — sinon, message explicite. if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then echo "✖ Container $CONTAINER pas démarré. Lance : pnpm dev:up" >&2 exit 1 fi echo "→ Vérification DB $DB_NAME sur $CONTAINER" EXISTS=$(docker exec -i "$CONTAINER" psql -U "$PG_USER" -d "$ADMIN_DB" -tAc \ "SELECT 1 FROM pg_database WHERE datname='$DB_NAME'" 2>/dev/null || echo "") if [ "$EXISTS" != "1" ]; then echo "→ Création de la DB $DB_NAME" docker exec -i "$CONTAINER" psql -U "$PG_USER" -d "$ADMIN_DB" \ -c "CREATE DATABASE \"$DB_NAME\";" fi echo "→ Application des migrations sur $DB_NAME" cd apps/api NODE_ENV=test_e2e PG_DB_NAME="$DB_NAME" pnpm exec node ace migration:run echo "✔ DB $DB_NAME prête."