#!/usr/bin/env bash # PANELS · comprueba que ESTE ambiente responde: Postgres (6 roles), # Redis (2 ACL) y Contabo (opcional; obligatorio si REQUIRE_S3=1). # # No crea recursos. Carga URLs desde el entorno (source .env.dev-local o # las vars de Coolify). # # Uso: # set -a && source .env.dev-local && set +a # ./db/provision/verify-connectivity.sh # REQUIRE_S3=1 ./db/provision/verify-connectivity.sh # staging/prod set -uo pipefail ROOT="$(cd "$(dirname "$0")/../.." && pwd)" fail=0 check() { local desc="$1"; shift if "$@" >/tmp/panels-conn-out.$$ 2>&1; then echo "OK - $desc" else echo "FAIL - $desc" cat /tmp/panels-conn-out.$$ fail=1 fi rm -f /tmp/panels-conn-out.$$ } need() { local name="$1" if [[ -z "${!name:-}" ]]; then echo "FAIL - falta $name" fail=1 return 1 fi return 0 } echo "== Postgres ==" need DATABASE_URL_PLATFORM && check "platform_app SELECT 1" psql "$DATABASE_URL_PLATFORM" -c "SELECT 1;" need DATABASE_URL_IAM && check "iam_app SELECT 1" psql "$DATABASE_URL_IAM" -c "SELECT 1;" need DATABASE_URL_CORE && check "core_app SELECT 1" psql "$DATABASE_URL_CORE" -c "SELECT 1;" if [[ -n "${DATABASE_URL_PLATFORM_OWNER:-}" ]]; then check "platform_owner SELECT 1" psql "$DATABASE_URL_PLATFORM_OWNER" -c "SELECT 1;" else echo "SKIP - DATABASE_URL_PLATFORM_OWNER (solo hace falta para Liquibase)" fi if [[ -n "${DATABASE_URL_IAM_OWNER:-}" ]]; then check "iam_owner SELECT 1" psql "$DATABASE_URL_IAM_OWNER" -c "SELECT 1;" else echo "SKIP - DATABASE_URL_IAM_OWNER" fi if [[ -n "${DATABASE_URL_CORE_OWNER:-}" ]]; then check "core_owner SELECT 1" psql "$DATABASE_URL_CORE_OWNER" -c "SELECT 1;" else echo "SKIP - DATABASE_URL_CORE_OWNER" fi echo "== Redis ==" need REDIS_URL_IAM && check "iam redis PING" redis-cli -u "$REDIS_URL_IAM" PING need REDIS_URL_CORE && check "core redis PING" redis-cli -u "$REDIS_URL_CORE" PING echo "== Contabo (S3) ==" if command -v deno >/dev/null 2>&1; then if (cd "$ROOT/api" && REQUIRE_S3="${REQUIRE_S3:-}" deno run --allow-net --allow-env --allow-read --allow-write scripts/verify-storage.ts); then : else fail=1 fi else echo "FAIL - deno no está en PATH; no se pudo probar el bucket" fail=1 fi echo "" if [[ "$fail" == "0" ]]; then echo "Conectividad de este ambiente: OK" else echo "Hay fallos de conectividad -- no desplegar la API contra este ambiente todavía." exit 1 fi