#!/bin/sh
# Script de despliegue estandar para el servidor de produccion.
#
# Reemplaza la rutina manual de:
#   sudo git pull origin main
#   sudo docker compose up -d --build
#
# que NUNCA corria migraciones -- con "synchronize: false" en ambas
# conexiones (tenant y plano de control), cualquier migracion nueva que
# llegue en un PR se queda sin aplicar hasta que alguien corra
# "npm run migration:run"/"migration:cp:run" a mano. Si el codigo nuevo ya
# espera una columna que la base todavia no tiene, eso es un 500 -- a veces
# justo en /auth/login, si la migracion pendiente toca algo que el login
# toca (tiendas, usuarios, etc).
#
# Este script aplica las migraciones pendientes usando la imagen "tools"
# (servicio backend-tools, profile "tools") DESPUES de reconstruirla con el
# codigo nuevo pero ANTES de reemplazar los contenedores en vivo -- asi la
# base siempre esta al dia antes de que el backend nuevo empiece a servir
# trafico.
#
# Uso: sudo ./deploy.sh

set -e

echo "==> git pull origin main"
git pull origin main

echo "==> construyendo imagenes (backend, backend-tools, frontend)"
docker compose build
docker compose --profile tools build backend-tools

echo "==> aplicando migraciones pendientes (tenant + plano de control)"
docker compose --profile tools run --rm --entrypoint sh backend-tools \
  -c "npm run migration:run:prod && npm run migration:cp:run:prod"

echo "==> sembrando config de WhatsApp desde variables de entorno (no-op si ya existe o si este sitio no usa WhatsApp)"
docker compose --profile tools run --rm backend-tools scripts/seed-whatsapp-desde-env.ts

echo "==> levantando contenedores con el codigo y el esquema ya al dia"
docker compose up -d

echo "==> listo. Verificar con: docker compose logs --tail=80 backend"
