#!/usr/bin/env bash # start-dev.sh — levanta infraestructura + migraciones + servidor dev # Uso: ./scripts/start-dev.sh set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" cd "$PROJECT_DIR" # ── 1. Verificar Docker ───────────────────────────────────────────────────── if ! command -v docker &>/dev/null; then echo "Docker no encontrado. Instalo o aseguro de que este en PATH." exit 1 fi # ── 2. Levantar postgres y redis ──────────────────────────────────────────── echo "Levantando postgres y redis..." docker compose up -d postgres redis # ── 3. Esperar a que postgres responda ────────────────────────────────────── echo "Esperando a postgres..." MAX_WAIT=30 COUNT=0 until docker compose exec -T postgres pg_isready -U mdv &>/dev/null; do sleep 1 COUNT=$((COUNT + 1)) if [ "$COUNT" -ge "$MAX_WAIT" ]; then echo "postgres no respondio en ${MAX_WAIT}s" exit 1 fi done echo "postgres listo" # ── 4. Instalar dependencias ───────────────────────────────────────────────── echo "npm install..." npm install # ── 5. Asegurar .env con DATABASE_URL ─────────────────────────────────────── if [ ! -f .env ]; then echo "Creando .env con DATABASE_URL..." cat > .env <<'EOF' DATABASE_URL=postgres://mdv:mdv_dev_only@localhost:5432/mercadodevida NODE_ENV=development EOF fi # ── 6. Exportar variables para que los procesos hijos las tengan ─────────────── export DATABASE_URL="postgres://mdv:mdv_dev_only@localhost:5432/mercadodevida" export NODE_ENV="development" # ── 7. Aplicar migraciones ────────────────────────────────────────────────── echo "Aplicando migraciones..." npx node-pg-migrate up # ── 8. Arrancar servidor dev ───────────────────────────────────────────────── echo "Todo listo. Arrancando servidor dev..." npm run start