#!/usr/bin/env bash
# Semana 7: dos instancias de Kallpa sobre el mismo archivo de SQLite y 20
# reservas simultáneas de la misma hora, repartidas entre las dos.
# Se corre desde la carpeta de Kallpa, con `make start` detenido.
if [ ! -f src/main.ts ]; then
  echo "Corran este script desde la carpeta de Kallpa (no encuentro src/main.ts)." >&2
  exit 2
fi
if curl -s -o /dev/null localhost:3000 || curl -s -o /dev/null localhost:3001; then
  echo "Ya hay un servidor en el puerto 3000 o 3001: detengan make start primero." >&2
  exit 2
fi
export KALLPA_DB=/tmp/dos-instancias.db
rm -f "$KALLPA_DB" "$KALLPA_DB"-*
PORT=3000 node src/main.ts > /tmp/a.log 2>&1 &
A=$!
sleep 2
PORT=3001 node src/main.ts > /tmp/b.log 2>&1 &
B=$!
sleep 2
D=$(date -d '+3 days' +%F)
echo "Respuestas (cantidad y código HTTP):"
for i in $(seq 1 20); do
  curl -s -o /dev/null -w '%{http_code}\n' -X POST "localhost:$((3000 + i % 2))/api/bookings" \
    -H 'content-type: application/json' \
    -d "{\"courtId\":3,\"memberId\":2,\"date\":\"$D\",\"startHour\":9,\"teamName\":\"Prueba $i\"}" &
done | sort | uniq -c
echo "Reservas confirmadas de la cancha 3 el $D a las 9:00:"
sqlite3 "$KALLPA_DB" "SELECT id, team_name FROM bookings WHERE court_id = 3 AND date = '$D' AND start_hour = 9 AND status = 'confirmed'"
kill $A $B
wait $A $B 2>/dev/null
echo "Logs de los servidores: /tmp/a.log y /tmp/b.log"
