#!/usr/bin/env bash
# Real demos for P009 "SQL vs NoSQL: When Each One Wins". Runs on render01 (Docker).
# Two database servers holding the same small kettle shop (lab/schema.sql, lab/seed.js), deleted at the end:
#   pg      PostgreSQL 18 (official postgres:18 image): customers, products, orders, order_items tables
#   mongo   MongoDB 8 (official mongo:8 image): customers, products, orders collections (items inside each order)
# Both run with no network at all (--network none): every command goes in through docker exec.
# psql is a real interactive session in a pty; mongosh runs each command with --eval (demo_driver.py).
set -euo pipefail
cd "$(dirname "$0")"
P=ce-p009
cleanup() { docker rm -f $P-pg $P-mongo >/dev/null 2>&1 || true; }
cleanup
[ -n "${KEEP:-}" ] || trap cleanup EXIT
docker run -d --name $P-pg --hostname pg --network none -e POSTGRES_USER=ana -e POSTGRES_DB=shop \
  -e POSTGRES_PASSWORD="$(head -c 16 /dev/urandom | base64 | tr -d '/+=')" postgres:18 >/dev/null
docker run -d --name $P-mongo --hostname mongo --network none mongo:8 >/dev/null
for i in $(seq 60); do docker exec $P-pg pg_isready -q -U ana -d shop 2>/dev/null && break; sleep 1; done
for i in $(seq 60); do docker exec $P-mongo mongosh --quiet --eval 'db.runCommand({ping: 1}).ok' >/dev/null 2>&1 && break; sleep 1; done
sleep 2
docker exec -i $P-pg psql -q -v ON_ERROR_STOP=1 -U ana -d shop < lab/schema.sql
docker cp lab/seed.js $P-mongo:/seed.js && docker exec $P-mongo mongosh --quiet --file /seed.js >/dev/null
python3 - "$P" < demo_driver.py
